阵列Diff混淆

时间:2014-10-28 11:15:08

标签: php arrays

尝试此代码时,我很困惑为什么不显示值黄色

有人可以详细说明吗?

    $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
)

8 个答案:

答案 0 :(得分:1)

来自documentation

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中任何其他数组中不存在的值。

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

答案 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)

输出正确,因为该函数显示第一个数组中但不存在于第二个数组中的值。如果要显示黄色,则必须反转函数中数组的位置。希望它有所帮助。