PHP比较两个数组的简便方法:相同的值,无论顺序如何

时间:2014-06-25 16:58:34

标签: php arrays sorting

以前关于SO的研究记录:

至少我相信:

举个例子:

$arr1 = [21, 23, 25];
$arr2 = [25, 21, 23];

最简单,非破坏性的方法是将这些值与相等的值进行比较,无论顺序如何

$arr1s = $arr1;
$arr2s = $arr2;

sort($arr1s, SORT_NUMERIC);
sort($arr2s, SORT_NUMERIC);

$isSameValues = ($arr1s === $arr2s);

或者有更简单,更清洁的方法吗?

2 个答案:

答案 0 :(得分:4)

使用array_count_valuesO(n) O(n log n)进行排序

$a = [1, 1, 3, 2];
$b = [1, 2, 2, 3];
var_dump (array_count_values($b) == array_count_values($a)); //false

注意:这仅适用于所有值都是字符串或整数的数组。

答案 1 :(得分:0)

你非常接近正确的解决方案! 这是你修改的代码:

$arr1 = [21, 23, 25];
$arr2 = [25, 21, 23];

$arr1s = $arr1;
$arr2s = $arr2;

sort($arr1s, SORT_NUMERIC);
sort($arr2s, SORT_NUMERIC);

$isSameValues = ($arr1 == $arr2);

在此处查看:http://sandbox.onlinephpfunctions.com/code/b737d3a9cf45e077a0d1f2c0195f389b81ace4a3

如果两个数组具有相同的键和值,则==就足够了,如here所示:

enter image description here