2013-04-18 175 views
2

我已經閱讀了一些關於這裏的教程,但沒有一個返回我所需要的。我有兩個數組。array_diff沒有返回預期的結果

$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個陣列的var_dump(A,B,和差異)和這裏的引擎收錄在array_diff通話http://pastebin.com/tn1dvCs3

+3

1949年是無論是在引擎收錄的數組。什麼是預期的輸出? – FoolishSeth 2013-04-18 04:17:06

回答

5

array_diff通過找到第一個陣列中不在第二個中的元素,按照documentation進行工作。嘗試反向您的來電:

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

要看到這個動作,讓我們看一個更可控的,但下面這個例子:

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

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

這產生了:

[[email protected] ~]$ vim test.php 
[[email protected] ~]$ php test.php 
array(1) { 
    [0]=> 
    int(1949) 
} 

請注意,這裏使用這是您試圖獲得的功能的最小示範例子。通過在實際實施中丟棄不必要的數據,您可以更快速地解決您遇到的問題。

+0

空數組仍返回一個空數組我。我更新了主要帖子,更多信息 – user2036066 2013-04-18 04:17:18

+1

@ user2036066我已經測試了這段代碼,如上所示,它可以工作。你的pastebin顯示兩個沒有diff的數組:它們包含相同的元素,所以自然不會產生任何東西。 – 2013-04-18 04:26:45

1

交換變量:

<?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) } 
+0

不工作,我編輯的職位主要與更多的信息 – user2036066 2013-04-18 04:14:12

2

返回包含從ARRAY1的所有項的數組不存在於任何其他陣列中。

因此:

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

會給你你之後的結果。

+0

仍返回我 – user2036066 2013-04-18 04:06:23

1

放棄,

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

爲了有1949結果,即$arrayB已經和$arrayA元素也沒有。

$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); 

Test Here

+0

不適合我。 – user2036066 2013-04-18 04:15:08

+0

我用你的輸入編輯了我的答案。 – 2013-04-18 04:17:44