3

我在这里阅读了一些教程,但没有一个能返回我需要的内容。我有两个数组。

$arrayA = array(1960,1961,1963,1962,1954,1953,1957,1956,1955);
$arrayB = array(1949,1960,1961,1963,1962,1954,1953,1957,1956,1955);

但是,当我运行 array_diff 时,它返回一个空数组。

$diff = array_diff($arrayA, $arrayB);

但我希望它返回 1949。我的代码有什么错误?

编辑:由于切换变量不起作用,我为 3 个数组(A、B 和 diff)做了 var_dump,这是 pastebin http://pastebin.com/tn1dvCs3

4

6 回答 6

7

array_diff根据文档,通过查找第一个数组中不在第二个数组中的元素来工作。尝试反转您的呼叫:

$diff = array_diff($arrayB, $arrayA);

为了看到这一点,让我们看一个更易于管理但等效的示例:

$arrayA = array(1960);
$arrayB = array(1949,1960);

$diff = array_diff($arrayB, $arrayA);
var_dump($diff);

这产生:

[mylogin@aserver ~]$ vim test.php
[mylogin@aserver ~]$ php test.php
array(1) {
  [0]=>
  int(1949)
}

请注意,这使用了您尝试获得的功能的最小演示示例。通过在实际实现中丢弃不必要的数据,您可以更快地解决您遇到的问题。

于 2013-04-18T04:02:27.830 回答
2

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

所以:

$diff = array_diff($arrayB, $arrayA);

会给你你想要的结果。

于 2013-04-18T04:01:52.693 回答
1

array_diff在调用中交换变量:

<?php
$arrayA = array(1960,1961,1963,1962,1954,1953,1957,1956,1955);
$arrayB = array(1949,1960,1961,1963,1962,1954,1953,1957,1956,1955);

$diff = array_diff($arrayB, $arrayA);

var_dump($diff);
?>

显示:

array(1) { [0]=> int(1949) }
于 2013-04-18T04:01:25.617 回答
1

给,

$diff = array_diff($arrayB, $arrayA);

有 的结果1949,即元素$arrayB有和$arrayA没有。

IE

$arrayA = array(1960,1961,1963,1962,1954,1953,1957,1956,1955);
$arrayB = array(1949,1960,1961,1963,1962,1954,1953,1957,1956,1955);

$diff = array_diff($arrayB, $arrayA);

print_r($diff );

在这里测试

于 2013-04-18T04:02:51.340 回答
0

你可以在这里阅读文档http://php.net/manual/pt_BR/function.array-diff.php

$diff = array_diff($arrayB, $arrayA);
print_r($diff);
于 2013-04-18T04:17:21.350 回答
0
$a = '5,6,'; 
$b = '6,6,'; 
$a_array = explode(',',$a); 
$b_array = explode(',',$b);
$result = array_diff($b_array,$a_array); 
var_dump($result);

但是,当我运行 array_diff 时,它返回一个空数组。

$result = array_diff($b_array,$a_array); 

但我希望它返回 6。我的代码有什么错误?

于 2018-12-26T03:10:34.167 回答