對於如下二維數組,要求對其進行去重:
$arr = array(
'0'=>array(
'name'=>'james',
'age'=>30,
),
'1'=>array(
'name'=>'susu',
'age'=>26,
),
'2'=>array(
'name'=>'james',
'age'=>30,
),
'new'=>array(
'name'=>'kube',
'age'=>37,
),
'list'=>array(
'name'=>'kube',
'age'=>27,
),
);
1、 二維數組內部的一維數組中的值不能完全相同,刪除其中重復的項:
代碼如下:
array(
'name'=>'james',
'age'=>30,
),
'1'=>array(
'name'=>'susu',
'age'=>26,
),
'2'=>array(
'name'=>'james',
'age'=>30,
),
'new'=>array(
'name'=>'kube',
'age'=>37,
),
'list'=>array(
'name'=>'kube',
'age'=>27,
),
);
printf(Before tranform the array:
); //輸出原來的數組
print_r($arr);
echo
;
function more_array_unique($arr=array()){
foreach($arr[0] as $k => $v){
$arr_inner_key[]= $k; //先把二維數組中的內層數組的鍵值記錄在在一維數組中
}
foreach ($arras $k => $v){
$v =join(,,$v); //降維 用implode()也行
$temp[$k] =$v; //保留原來的鍵值 $temp[]即為不保留原來鍵值
}
printf(After split the array:
);
print_r($temp); //輸出拆分後的數組
echo
;
$temp =array_unique($temp); //去重:去掉重復的字符串
foreach ($tempas $k => $v){
$a = explode(,,$v); //拆分後的重組 如:Array( [0] => james [1] => 30 )
$arr_after[$k]= array_combine($arr_inner_key,$a); //將原來的鍵與值重新合並
}
//ksort($arr_after);//排序如需要:ksort對數組進行排序(保留原鍵值key) ,sort為不保留key值
return$arr_after;
}
$arr_new = more_array_unique($arr); //調用去重函數
printf(Duplicate removal of the array:
);
print_r($arr_new);
echo
;
?>
輸出結果: