尝试此代码时,我很困惑为什么不显示值黄色。
有人可以详细说明吗?
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
$array1
中的多次出现都以相同的方式处理。这将输出:
Array
(
[1] => blue
)
答案 0 :(得分:1)
array array_diff ( array $array1 , array $array2 [, array $... ] )
返回一个数组,其中包含array1中未包含的所有条目 存在于任何其他阵列中。
根据这一点,下面将打印 blue 因为它是$array2
中不存在的唯一元素。
它不会打印黄色,因为它会检查$array1
中但不在$array2
中的元素,不是反之亦然:
<?php
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array1, $array2);
print_r($result);
?>
$array1
中只有来自$array2
的 blue ,因此请将其打印出来。不关心$array2
中但不在$array1
中的元素,因此黄色不会显示。
答案 1 :(得分:0)
的定义
array_diff($array1, $array2);
是返回array1中其他数组中不存在的条目。 你可以做到
$result2 = array_diff($array2, $array1);
然后合并$result1
和$result2
,如果你想查看其中任何一个缺少的内容。
答案 2 :(得分:0)
这是因为您正在搜索第一个和第二个数组之间的差异,这只是蓝色,因为第二个数组不包含蓝色。
如果你试试这个:
$array1 = array("a" => "green", "red", "blue", "red");
$array2 = array("b" => "green", "yellow", "red");
$result = array_diff($array2, $array1);
print_r($result);
&GT;
输出将为Array ( [0] => yellow)
,因为这是第二个和第一个数组之间的差异。
希望这有帮助! :d
答案 3 :(得分:0)
这就是array_diff
的工作原理:
将array1与一个或多个其他数组进行比较,并返回array1中任何其他数组中不存在的值。
答案 4 :(得分:0)
根据PHP手册:http://fr2.php.net/manual/en/function.array-diff.php
array_diff返回一个数组,其中包含第一个数组中不存在于任何其他数组中的所有条目。
答案 5 :(得分:0)
您是否阅读过the documentation?
将array1与一个或多个其他数组进行比较并返回 array1中的值,不存在于任何其他数组中。
array1
中唯一没有出现在array2
中的值是&#34;蓝色&#34;。
答案 6 :(得分:0)
同样的事情很久以前困惑我:) 在你的情况下你应该在array_diff中交换数组。 Arrray diff实际上工作:告诉我在第一个数组($ array1)中我没有在其他数组中有什么 干杯! :)
答案 7 :(得分:0)
输出正确,因为该函数显示第一个数组中但不存在于第二个数组中的值。如果要显示黄色,则必须反转函数中数组的位置。希望它有所帮助。