php - 检查两个数组是否具有相同的值

时间:2014-05-23 16:09:50

标签: php arrays multidimensional-array

我想知道检查两个(可能是多维)数组包含相同值的最快方法。

在其他方面我想知道第一个数组的(无序)值集是否等于第二个数组的值集

更新:

1)不能使用==或===。他们还检查关键的平等。

2)不能使用array_diff。它不适用于多维数组

1 个答案:

答案 0 :(得分:2)

对于嵌套数组,没有简单的方法可以做到这一点;你必须编写自己的递归函数。看起来array_udiff也不合适(因为需要比比较函数更大/更少的信息);

这应该可以解决问题:

function recursive_sort_array($a) {
    if(!is_array($a))
        return $a;
    $a = array_map('recursive_sort_array', $a);
    sort($a);
    return array_values($a);
}

function arrays_different($a, $b) {
    return recursive_sort_array($a) === recursive_sort_array($b);
}

它的作用:第一个函数(recursive_sort_array)以递归方式对数组进行排序,并仅返回与数字索引相关联的值。在此操作之后,具有相同值(递归)的任何数组都将相等,然后可以与其中一个相等运算符进行比较。