与PHP中两个数组的值进行比较

时间:2010-04-13 16:56:30

标签: php arrays

您好我想比较2个数组的所有值,最后得到一个真或假。我正在使用下面的代码,并认为结果将是错误的。但情况并非如此,当最后一行运行时,我希望显示类似

的显示

数组([0] => 0)

但我没有显示,所以假设php很高兴没有差异

我的代码是

        $before = array('1', '1', '0', '0', '1', '0' ) ;
        $after =  array('0', '1', '0', '0', '1', '0' ) ;

        $new_array= array_diff($before,$after);

        print_r ($new_array) ;

当然array_diff应该发现差异吗?任何帮助都会非常感谢

6 个答案:

答案 0 :(得分:8)

array_diff会在$before但不是$after中提供哪些元素。由于两个数组都由'0''1'组成,因此它返回一个空数组。

您正在寻找的是array_diff_assoc,它会同时查看键和值。

请注意,您获得的输出不是Array( [0] => 0 ),而是Array( [0] => 1 ),因为它提供了第一个数组中不存在于另一个数组中的元素。

如果您希望输出其他内容,则需要array_diff_assoc($after, $before)

答案 1 :(得分:3)

    $before = array('1', '1', '0', '0', '1', '0' ) ;
    $after =  array('0', '1', '0', '0', '1', '0' ) ;

    $new_array= array_diff_assoc($before,$after);

    print_r ($new_array) ;

答案 2 :(得分:1)

请参阅http://php.net/manual/en/function.array-diff.php

“$ array1中的多次出现都以相同的方式处理。”

所以,既然你只有零和一个,那么一切都是“相同的。”

答案 3 :(得分:0)

是的,array_diff确实发现了差异。它找到了以下数组与第一个数组之间的差异。但是,它不会比较0到0和1比1。它只是检查Array1中的每个值是否在Array2 ... ArrayN中。此函数返回Array1中所有出现的数组,这些数组在其他数组中找不到,而不是true / false布尔值。 See example 1 in the documentation.

答案 4 :(得分:0)

  

您好我要比较的所有值   2个数组,最后得到一个真或   假

$bool = ($array1 == $array2);

http://us2.php.net/manual/en/language.operators.array.php

答案 5 :(得分:0)

听起来可能很愚蠢,但是比较两个不同长度的数组不会产生预期的差异。首先检查数组的长度,如果它们匹配然后,请使用array_diff。否则,您的差异将始终为空。