array_unique用于数组内的数组

时间:2022-10-25 09:25:03

I need a function like array_unique for arrays inside array.

我需要一个像array_unique这样的函数用于数组中的数组。

The Case - should be equal, but output "not equal":

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

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

How should the code be changed to get output "equal"?

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

3 个解决方案

#1


33  

You should modify your call for array_unique to have it include the SORT_REGULAR flag.

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

$arr2 = array_unique($arr, SORT_REGULAR);

#2


2  

If you want to test if the outer array has unique entries, then stringify the inner contents first for a comparison:

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

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

#3


-1  

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

#1


33  

You should modify your call for array_unique to have it include the SORT_REGULAR flag.

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

$arr2 = array_unique($arr, SORT_REGULAR);

#2


2  

If you want to test if the outer array has unique entries, then stringify the inner contents first for a comparison:

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

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

#3


-1  

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