<?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)); ?>