array_diff_assoc文档的代码产生意外结果

时间:2018-06-28 14:32:13

标签: php arrays

以下是PHP documentation about array_diff_assoc中的一个示例。

  

在此示例中,您看到两个数组中都存在"a" => "green"对,因此在函数的输出中不存在。与此不同,输出0 => "red"对是因为第二个参数"red"的键为1

<?php
$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
$result = array_diff_assoc($array1, $array2);
print_r($result);
?>
     

上面的示例将输出:

Array
(
    [b] => brown
    [c] => blue
    [0] => red
)

red存在于两个数组中,但在array_diff_assoc的输出中返回,为什么PHP 认为 red中的$array1$array2不同吗?

2 个答案:

答案 0 :(得分:2)

这是因为在第一个数组中红色的索引为0,而在第二个数组中红色的索引为1,所以它们是不同的。

array_diff_assoc

从文档中

  

通过附加索引检查来计算数组的差异

Check the vardumps

<?php

$array1 = array("a" => "green", "b" => "brown", "c" => "blue", "red");
$array2 = array("a" => "green", "yellow", "red");
var_dump($array1);
var_dump($array2);

输出:

array(4) {
  ["a"]=>
  string(5) "green"
  ["b"]=>
  string(5) "brown"
  ["c"]=>
  string(4) "blue"
  [0]=>
  string(3) "red"
}
array(3) {
  ["a"]=>
  string(5) "green"
  [0]=>
  string(6) "yellow"
  [1]=>
  string(3) "red"
}

答案 1 :(得分:1)

$ array1中红色的键为0:

$ array1 ([a] =>绿色[b] =>棕色[c] =>蓝色 [0] =>红色)

$ array2 ([a] =>绿色[0] =>黄色 [1] =>红色)