2015-09-20 111 views
-1

我想關鍵和array_diff,如何比較字符串和

$s1=1; 
$s2=7; 
$s3=8; 
$r=array("$s1","$s2","$s3"); 
$rr=array("1","2","3","4","5","6","7","8","9","10"); 
$rrr=array_diff($r,$rr); 
echo $rrr[0]; 

我希望得到的結果一樣2中得到這兩個陣列和回聲和array_diff兩個不同陣列的價值,但我得到的錯誤。有人在這裏幫忙。

+1

什麼錯誤?始終包含錯誤消息。 0如果我正確 – chris85

+2

數組$存款準備金率是空的。你是對的。這樣做的正確方法是什麼? –

+0

看它是:當您嘗試打印的內容,這將導致錯誤未定義偏移 – scylla

回答

3

documentation的用於array_diff說,它

比較ARRAY1對一種或多種其它陣列,並返回ARRAY1的 值中不存在任何其它陣列。

array1$r,和你的other array$rr

$r基本上等同於

​​

我們可以清楚的看到,在$r出現在$rr沒有值。 ("1""7""8"都在$rr

因此,您將收到一條E_NOTICE當您嘗試訪問$rrr[0],因爲$rrr是空的。

也許你的意思是reverse the order of the two arguments

$rrr = array_diff($rr, $r); 

由於Loop Me指出,array_diffdoes not reorder your indices

這意味着,你現在數組是這樣的。

Array 
(
    [1] => 2 
    [2] => 3 
    [3] => 4 
    [4] => 5 
    [5] => 6 
    [8] => 9 
    [9] => 10 
) 

您可以使用array_values對它們重新排序。

$rrr = array_values($rrr); 

Demo

+1

這樣做後,您必須小心打印內容。陣列看起來像Array([1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 [8] => 9 [9] => 10) –

+0

謝謝。它解決了這個問題 – scylla