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


How to check if two indexed arrays have same values even if the order is not same in PHP?

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

示例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

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

这个问题的解决方法是什么?

谢谢

$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";
}

需要做长度检查,否则上面的两个数组会出现相同的结果。

与其比较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';

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