PHP - Check if two arrays are equal

后端 未结 15 2070
说谎
说谎 2020-11-22 11:26

I\'d like to check if two arrays are equal. I mean: same size, same index, same values. How can I do that?

Using !== as suggested by a user, I expect th

15条回答
  •  春和景丽
    2020-11-22 11:57

    Another method for checking equality regardless of value order works by using http://php.net/manual/en/function.array-intersect.php, like so:

    $array1 = array(2,5,3);
    $array2 = array(5,2,3);
    if($array1 === array_intersect($array1, $array2) && $array2 === array_intersect($array2, $array1)) {
        echo 'Equal';
    } else {
        echo 'Not equal';
    }
    

    Here's a version that works also with multidimensional arrays using http://php.net/manual/en/function.array-uintersect.php:

    $array1 = array(
        array(5, 2),
        array(3, 6),
        array(2, 9, 4)
    );
    $array2 = array(
        array(3, 6),
        array(2, 9, 4),
        array(5, 2)
    );
    
    if($array1 === array_uintersect($array1, $array2, 'compare') && $array2 === array_uintersect($array2, $array1, 'compare')) {
        echo 'Equal';
    } else {
        echo 'Not equal';
    }
    
    function compare($v1, $v2) {
        if ($v1===$v2) {
            return 0;
        }
        if ($v1 > $v2) return 1;
        return -1;
    }
    

提交回复
热议问题