您好我想比较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应该发现差异吗?任何帮助都会非常感谢
答案 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);
答案 5 :(得分:0)
听起来可能很愚蠢,但是比较两个不同长度的数组不会产生预期的差异。首先检查数组的长度,如果它们匹配然后,请使用array_diff
。否则,您的差异将始终为空。