首页 > 解决方案 > array_diff_assoc 文档代码的意外结果

问题描述

这是PHP 文档中关于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

标签: phparrays

解决方案


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

array_diff_assoc

从文档:

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

检查 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"
}

推荐阅读