如果两个索引数组是否具有相同的值,即使PHP中的顺序不相同,如何检查?

时间:2011-07-30 04:18:43

标签: php arrays sorting

我想比较两个索引数组,因为两个数组的值相同但顺序可能不同,例如我尝试这样做但它根本不起作用。

示例1:

$a = array(1,2,3,4,5);
$b = array(1,2,3,5,4);
echo ($a == $b) ? 'Match Found' : 'No Match Found';
//Returns No Match Found

示例2 :(尝试对数组进行排序但不排序)

$a = array(1,2,3,4,5);
$a = sort($a);
$b = array(1,2,3,5,4);
$b = sort($b);
echo ($a === $b) ? 'Match Found' : 'No Match Found';
//Returns Match Found

以上示例返回匹配Found,这是因为sort()如果我尝试对索引数组进行排序则返回1,并且$a$b在排序后包含1导致条件是真的,这是完全错误的,这个技巧似乎也不起作用,我尝试了许多不同的排序函数,如asort()arsort()等,但似乎都没有。

这是什么解决方法?

谢谢

2 个答案:

答案 0 :(得分:2)

$a = array(1,2,3,4,5);
$b = array(1,3,2,5,3,4);


if(count($a) == count($b) && count(array_diff($a, $b)) == 0){
    echo "A";
}

需要进行长度检查,否则上面的两个数组会相同。

编辑:更好的解决方案。

答案 1 :(得分:1)

除了比较sort的返回值之外,为什么不在对数组进行排序后对它们进行比较呢?

$a = array(1,2,3,4,5);
sort($a);
$b = array(1,2,3,5,4);
sort($b);
echo ($a == $b) ? 'Match Found' : 'No Match Found';

如果数组具有不同的键但值相同,则它们仍将计为相等。如果这是一个问题,您还必须比较数组键。