1

我有这个代码:

$a1 = array(31001);
$a2 = array(31001, 31002);
$diff = array_diff($a1, $a2);
var_dump($diff);

我期待 array_diff 将array(0 => 31002)根据 PHP 文档返回:

返回一个数组,其中包含 array1 中不存在于任何其他数组中的所有条目。

但是发布的代码返回空数组。任何人都可以向我解释为什么会发生这种情况以及如何获得正确的结果?

这是PHPfiddle 示例

感谢您提供任何帮助或有用的提示。

4

3 回答 3

8

准确阅读文档。$a1存在和不存在的一组值$a2是空的:$a1只包含一个元素 ( 31001),它也存在于$a2.

您想获取所有存在于$a2中但不存在于 中的值$a1,因此您必须切换数组的顺序,然后传递给array_diff()

$diff = array_diff($a2, $a1);
于 2013-05-10T13:29:19.750 回答
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 将返回 array(0 => 31002),仅在这种情况下,这是由于元素的索引位置

于 2013-05-10T13:32:12.443 回答
0
<?php

 $a1 = array(31001);
 $a2 = array(31002);
 $diff = array_diff($a1, $a2);

 var_dump($diff)

?>

添加 $a2=array() 一个元素

于 2013-05-10T13:36:12.603 回答