19

我需要一个函数,比如array_unique数组内的数组。

Case - 应该相等,但输出“不相等”:

<?php
$arr=array(array('a',1),array('a',2));
$arr2=array_unique($arr);
if($arr2==$arr){
  echo "equal";
}
else{
  echo "not equal";
}
?>

应该如何更改代码以使输出“相等”?

4

3 回答 3

51

您应该修改您的调用array_unique以使其包含该SORT_REGULAR标志。

$arr2 = array_unique($arr, SORT_REGULAR);
于 2011-03-06T17:09:14.753 回答
2

如果要测试外部数组是否具有唯一条目,则首先将内部内容字符串化以进行比较:

$arr1 = array_map("serialize", $arr);
$arr2 = array_unique($arr1);
if ($arr2 == $arr1) {
于 2011-03-06T17:10:45.697 回答
-1
function array_unique_when_values_are_serializable($main_array) {
    return array_map('unserialize', array_values(array_unique(array_map('serialize', $main_array))));
}
于 2015-04-03T19:31:27.760 回答