Trước tiên, bạn không thể sử dụng đơn giản array_unique
cho vấn đề này vì array_unique nội bộ đối xử với các mục mảng như dây đàn, đó là lý do "không thể chuyển đổi Array String" thông báo sẽ xuất hiện khi sử dụng array_unique cho điều này .
Vì vậy, cố gắng này:
$result = array(
0=>array('a'=>1,'b'=>'Hello'),
1=>array('a'=>1,'b'=>'other'),
2=>array('a'=>1,'b'=>'other')
);
$unique = array_map("unserialize", array_unique(array_map("serialize", $result)));
print_r($unique);
Kết quả:
Array
(
[0] => Array
(
[a] => 1
[b] => Hello
)
[1] => Array
(
[a] => 1
[b] => other
)
)
Serialization là rất tiện dụng cho các vấn đề như vậy.
Nếu bạn cảm thấy đó là quá nhiều ma thuật cho bạn, hãy kiểm tra này blog post
function array_multi_unique($multiArray){
$uniqueArray = array();
foreach($multiArray as $subArray){
if(!in_array($subArray, $uniqueArray)){
$uniqueArray[] = $subArray;
}
}
return $uniqueArray;
}
$unique = array_multi_unique($result);
print_r($unique);
Trớ trêu thay, in_array
đang làm việc cho mảng, nơi array_unique
không.
Nguồn
2012-12-13 10:32:17
Điều gì làm cho nó lặp lại 'a = '&' b = other' hoặc chỉ 'b = other' ... – Baba
' a' và' b' @ Bada cảm ơn – kn3l
http://stackoverflow.com/questions/3767318/how-to-remove-duplicate-values-from-an-associative-array-based-on-a-specific-val –