我如何比较以下两个数组? 当我使用时:
array_diff($array1, $array2)
它只显示$ array1中的所有数组,而不仅仅是39077
Array1 ( [0] => 40016 [1] => 39995 [2] => 39990 [3] => 38921 [4] => 39890 [5] => 39812 [6] => 39672 [7] => 39767 [8] => 38709 [9] => 18631 [10] => 9503 )
Array2 ( [0] => 40016 [1] => 39995 [2] => 39990 [3] => 38921 [4] => 39890 [5] => 39812 [6] => 39672 [7] => 39767 [8] => 38709 [9] => 18631 [10] => 9503 [11] => 39077 )
如果我使用array_diff_keys,我可以用1234作为array1中的值来欺骗它,因为该函数只检查有多少个键而不是什么值。
Array1 ( [0] => 40016 [1] => 39995 [2] => 39990 [3] => 38921 [4] => 39890 [5] => 39812 [6] => 39672 [7] => 39767 [8] => 38709 [9] => 18631 [10] => 9503 [11] => 1234)
Array2 ( [0] => 40016 [1] => 39995 [2] => 39990 [3] => 38921 [4] => 39890 [5] => 39812 [6] => 39672 [7] => 39767 [8] => 38709 [9] => 18631 [10] => 9503 [11] => 39077 )
输出将是
array()
答案 0 :(得分:1)
这是正确的PHP手册 http://php.net/manual/en/function.array-diff.php 说那个date_diff
将array1与一个或多个其他数组进行比较并返回 array1中的值,不存在于任何其他数组中。
并且特定于简单数组而不是键(关联)数组..所以对于键数组不起作用
可能你需要
array_diff_key($array1, $array2)
那
array_diff_key - 使用键计算数组的差异 比较
或者您可以使用array_diff_assoc
的值 array_diff_assoc($array1, $array2);
答案 1 :(得分:0)
它只显示$ array1中的所有数组,而不仅仅是39077
只需交换参数
array_diff($array2, $array1);
注意:这个答案将返回$ array2中$ array1中不存在的值,它不会返回$ array1中的值 不在$ array2。
示例强>
$ php -r '$a1=array(1,2,3,7,8); $a2=array(1,2,7,10,15); print_r(array_diff($a2,$a1));'
Array
(
[3] => 10
[4] => 15
)
<强>输入强>
$ cat test.php
<?php
$array1 = array( 40016 , 39995 , 39990, 38921 , 39890 , 39812 , 39672 , 39767 , 38709 , 18631 , 9503);
$array2 = array( 40016 , 39995 , 39990, 38921 , 39890 , 39812 , 39672 , 39767 , 38709 , 18631 , 9503, 39077);
print_r(array_diff($array2,$array1));
?>
<强>输出强>
$ php test.php
Array
(
[11] => 39077
)