在php中有一个快速的方法来检查2个数组是否包含相同的项目,而顺序可能不同。
这适用于整数数组How to check if two indexed arrays have same values even if the order is not same in PHP?
//these must be considered equal
array(1,2,3);
array(2,1,3);
array(3,1,2);
//However it must also be possible for strings
array("foo", "bar");
array("bar", "foo");
答案 0 :(得分:1)
使用此
对数组
进行排序sort($arr1);
sort($arr2);
通过将它们转换为字符串进行比较 - 以下任何一种方式。
echo (implode(" ", $arr1) == implode(" ",$arr2))? "true":"false";
/* or */
echo (print_r($arr1,true) == print_r($arr2,true))? "true":"false";
答案 1 :(得分:1)
使用此
$is_equal = (count($arr1)==count($arr2)) && !count(array_diff($arr1, $arr2));
答案 2 :(得分:0)
我自己找到了一个非常好的解决方案。
$ar1 = array("hello","world","foo");//equals
$ar2 = array("world","foo","hello");//equals
$ar3 = array("hello","world","bar");//not equal
$ar4 = array();
//Add all items to a single array
$ar4 = array_merge($ar1, $ar2);//equal
//OR
$ar4 = array_merge($ar1, $ar3);//not equal
//Remove all duplicates
//$ar4 = array_unique($ar4); edited due to comment below
$ar4 = array_flip($ar4);
//if you want to user $ar4 later flip it again, its still faster than unique
$ar4 = array_flip($ar4);
$c1 = count($ar1);// = 3
$c4 = count($ar4);// = 3 when the arrays were equal and is > 3 if not
if($c1 === $c4){ //CODE }
简而言之,这是
$ar1 = array("hello","world","foo");
$ar2 = array("world","foo","hello");
$ar4 = array_merge($ar1, $ar2);
//$ar4 = array_unique($ar4); edited due to comment below
$ar4 = array_flip($ar4);
if(count($ar1) === count($ar4)){ //code }
答案 3 :(得分:0)
您可以对数组进行排序,然后进行比较:
function arrays_are_equal($arr1, $arr2) {
sort($arr1);
sort($arr2);
return $arr1 == $arr2;
}
$arr1 = [1, 2, 3, 4];
$arr2 = [2, 3, 1, 4];
arrays_are_equal($arr1, $arr2); // true