我有这段代码:
$a1 = array(31001);
$a2 = array(31001, 31002);
$diff = array_diff($a1, $a2);
var_dump($diff);
根据PHP文档,我期待array_diff返回array(0 => 31002)
:
返回一个数组,其中包含array1中未包含的所有条目 存在于任何其他阵列中。
但是发布的代码返回空数组。任何人都可以解释为什么会发生这种情况以及如何获得正确的结果?
感谢您提供任何帮助或有用的提示。
答案 0 :(得分:7)
准确阅读文档。 $a1
中存在且$a2
中不存在的值集合为空:$a1
只包含一个元素(31001
),它也存在于{{1}中}}
您希望获取$a2
中但不在$a2
中的所有值,因此您必须切换数组的顺序,然后传递给$a1
:
array_diff()
答案 1 :(得分:2)
试试这个,它会起作用
$diff = array_diff($a2, $a1);
会提供
Array
(
[1] => 31002
)
但是当你尝试
时$a1 = array(31001);
$a2 = array(31002, 31001);
$diff = array_diff($a2, $a1);
会提供
Array
(
[0] => 31002
)
array_diff将返回数组(0 => 31002),仅在此条件下,这是由于元素的索引位置
答案 2 :(得分:0)
<?php
$a1 = array(31001);
$a2 = array(31002);
$diff = array_diff($a1, $a2);
var_dump($diff)
?>
在$ a2 = array()中添加一个元素