Php 显示数组差异不工作
如何比较以下两个阵列? 当我使用:Php 显示数组差异不工作,php,arrays,compare,Php,Arrays,Compare,如何比较以下两个阵列? 当我使用: 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]
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_键,我可以用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()
这是正确的PHP手册 说出那个日期 将数组1与一个或多个其他数组进行比较,并返回 数组1中不存在于任何其他数组中的值 并且特定于简单数组,而不是键(关联)数组。。所以对于键数组不起作用 可能是你需要的
array_diff_key($array1, $array2)
那
array_diff_key-使用
比较
对于值,您可以使用array\u diff\u assoc
array_diff_assoc($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($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
)
谢谢scaisEdge,功能强大:)@Michael如果我的答案是正确的,请将其标记为已接受……看看我是如何知道的,还要再等5分钟:)如果我需要比较这些值,该怎么办?更好地解释。。你的意思是什么?它仍然不起作用,它仍然不仅显示了两者之间的唯一区别。预期的结果是什么output@Michael您交换了参数吗?我没有得到相同的输出,可能是因为您手动创建了数组;然后循环foreach$array[]=$value;这仍然不清楚,但是如果您想要
39077
您需要交换参数数组_diff($array2,$array1)
,但是它只显示了array2中的所有值,而不是在$array1中之前的所有值之间的差异。您的显示为空和交换的显示39077
:您确定没有实际运行array\u intersect()
?