array_unique用于数组内的数组

时间:2011-03-06 16:56:03

标签: php multidimensional-array associative-array array-unique

对于数组内的数组,我需要像array_unique这样的函数。

案例 - 应该是平等的,但输出"不等于":

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

如何更改代码以获得输出&#34;等于&#34;?

3 个答案:

答案 0 :(得分:36)

您应修改array_unique的来电,使其包含SORT_REGULAR标记。

$arr2 = array_unique($arr, SORT_REGULAR);

答案 1 :(得分:2)

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

$arr1 = array_map("serialize", $arr);
$arr2 = array_unique($arr1);
if ($arr2 == $arr1) {

答案 2 :(得分:-1)

function array_unique_when_values_are_serializable($main_array) {
    return array_map('unserialize', array_values(array_unique(array_map('serialize', $main_array))));
}