2010-04-13 50 views
3

您好,我想比較2個數組的所有值,並以true或false結尾。我正在使用下面的代碼,並認爲結果是錯誤的。但事實並非如此,當最後一個行運行我希望顯示像比較兩個數組中的值在PHP中

陣列([0] => 0)

,但我沒有得到任何顯示這樣認爲PHP是幸福的,有沒有什麼區別

我的代碼是

 $before = array('1', '1', '0', '0', '1', '0') ; 
     $after = array('0', '1', '0', '0', '1', '0') ; 

     $new_array= array_diff($before,$after); 

     print_r ($new_array) ; 

肯定是和array_diff應該在這裏發現有區別嗎?任何幫助將非常感謝

回答

8

array_diff給出哪些元素在$before而不是$after。由於這兩個數組由'0''1'組成,因此它將返回一個空數組。

你在找什麼是array_diff_assoc,它一起看鑰匙和價值。

請注意,您得到的輸出不會是Array([0] => 0),而是Array([0] => 1),因爲它會給出第一個數組中不存在的元素。

如果你希望其他輸出,你需要做array_diff_assoc($after, $before)

0

是的,array_diff確實發現了一個區別。它發現以下數組與第一個數組之間的區別。但是,它不會比較0到0和1到1。它只是檢查Array1中的每個值是否在Array2 ... ArrayN中。此函數返回Array1中所有在其他數組中找不到的實例的數組,而不是true/false布爾值。 See example 1 in the documentation.

3
$before = array('1', '1', '0', '0', '1', '0') ; 
    $after = array('0', '1', '0', '0', '1', '0') ; 

    $new_array= array_diff_assoc($before,$after); 

    print_r ($new_array) ;