<?php
//二維數組
$test["aa"] = array("id"=>"17","name"=>"汽車");
$test["bb"] = array("id"=>"18","name"=>"飛機");
$test["cc"] = array("id"=>"19","name"=>"高鐵");
$test["dd"] = array("id"=>"19","name"=>"飛機");
//去除二維數組重復值,默認重復保留前面的值
/*
*array 二維數組
*keyid 需要判斷是否重復的項目
*desc 為true時保留后面的
*/
function array_repeat($array,$keyid="id",$desc=false)
{
$array = array_values($array);
//倒敘排列數
if($desc)
{
$array = array_rsort($array,true);
}
//提取需要判斷的項目變成一維數組
$a = array_tq($array,$keyid);
//去除一維數組重復值
$a = array_unique($a);
//提取二維數組項目值
foreach($array[0] AS $key=>$value)
{
$akey[] = $key;
}
//重新拼接二維數組
foreach($akey AS $key=>$value)
{
$b = array_tq($array,$value);
foreach($a AS $key2=>$value2)
{
$c[$key2][$value] = $b[$key2];
}
}
if($desc)
{
$c = array_rsort($c,true);
}
return $c;
}
//數組倒敘
function array_rsort($arr,$isvalues=false)
{
if(is_array($arr)){
$flag = false;
//一維數組
if(count($arr) == count($arr,1)){
$flag = true;
$i = 0;
//轉換成二維數組
foreach($arr AS $key=>$value){
$a[$i]["okey"] = $key;
$a[$i]["value"] = $value;
$i++;
}
$arr = $a;
}
//多維數組
else
{
//添加臨時key值
foreach($arr AS $key=>$value){
$value["okey"] = $key;
$array[] = $value;
}
$arr = $array;
}
//倒敘並還原key值
$count = count($arr)-1;
for($i=0;$i<count($arr);$i++){
$b[$arr[$count]["okey"]] = $arr[$count];
$count--;
}
//重構一維數組
if($flag == true){
foreach($b AS $key=>$value){
if($isvalues){
$c[] = $value["value"];
}else{
$c[$value["okey"]] = $value["value"];
}
}
}
//多維數組去除臨時key值
else
{
foreach($b AS $key=>$value) {
unset($value["okey"]);
if($isvalues){
$c[] = $value;
}else{
$c[$key] = $value;
}
}
}
return $c;
}
}
//提取二維數組項目
function array_tq($array,$aval="")
{
foreach($array AS $key=>$value)
{
$result[] = $value[$aval];
}
return $result;
}
//去除id相同的項
var_dump(array_repeat($test,"id"));
var_dump(array_repeat($test,"id",true));
echo "----------------------------------------";
//去除name相同的項
var_dump(array_repeat($test,"name"));
var_dump(array_repeat($test,"name",true));
?>