首先,为了解决这个问题,您不能仅使用普通的array_unique
函数,因为其在内部将数组项视为字符串处理,这就是为什么在使用array_unique
时会出现“无法将数组转换为字符串”的错误提示。
因此,请尝试以下方法:
$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);
结果:
Array
(
[0] => Array
(
[a] => 1
[b] => Hello
)
[1] => Array
(
[a] => 1
[b] => other
)
)
序列化对于这种问题非常方便。
如果您觉得这对你来说有些 魔幻,请看看这篇博客文章
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);
具有讽刺意味的是,in_array
适用于数组,而 array_unique
却不适用。
a=
和b=other
重复,或者只是b=other
就可以了呢? - Babaa
和b
@Bada 谢谢 - tree em