PHP - 检查两个数组是否相等

2022-08-30 06:00:33

我想检查两个数组是否相等。我的意思是:相同的大小,相同的索引,相同的值。我该怎么做?

按照用户的建议使用,我希望如果数组中至少有一个元素不同,则以下将打印回车,但实际上并非如此。!==

if (($_POST['atlOriginal'] !== $oldAtlPosition) 
    or ($_POST['atl'] !== $aext) 
    or ($_POST['sidesOriginal'] !== $oldSidePosition) 
    or ($_POST['sidesOriginal'] !== $sideext)) {

    echo "enter";
}

答案 1
$arraysAreEqual = ($a == $b); // TRUE if $a and $b have the same key/value pairs.
$arraysAreEqual = ($a === $b); // TRUE if $a and $b have the same key/value pairs in the same order and of the same types.

请参见数组运算符

编辑

不等式运算符是非单位运算符匹配相等运算符和单位运算符 。!=!=======


答案 2

根据此页面

注意:接受的答案适用于关联数组,但对于索引数组,它不会按预期工作(如下所述)。如果要比较其中任何一个,请使用此解决方案。此外,此函数可能不适用于多维数组(由于array_diff函数的性质)。

测试两个索引数组,其中元素的顺序不同,使用或失败,例如:$a == $b$a === $b

<?php
    (array("x","y") == array("y","x")) === false;
?>

这是因为上述含义:

array(0 => "x", 1 => "y")与。。array(0 => "y", 1 => "x")

要解决此问题,请使用:

<?php
function array_equal($a, $b) {
    return (
         is_array($a) 
         && is_array($b) 
         && count($a) == count($b) 
         && array_diff($a, $b) === array_diff($b, $a)
    );
}
?>

添加了比较数组大小(由super_ton建议),因为它可以提高速度。