2015-11-02 96 views
0

我正在使用codeigniter。 我想要兩個數組的差異,因爲我使用的是php的array_diff函數。 由於關聯數組,我已經使用了call_user_func_array並獲得了記錄。在array_diff中顯示第一個數組的結果

$result_sun = call_user_func_array('array_merge', $data['sun_holiday']); 
$result_sat = call_user_func_array('array_merge', $data['third_sat']); 

但是,當我準備讓這兩個陣列的區別一樣,

$result = array_diff($result_sun,$result_sat); 

那隻能說明第一陣列$result_sun的記錄。

$result_sun = Array 
(
    [0] => 2015-09-06 
    [1] => 2015-09-13 
    [2] => 2015-09-20 
    [3] => 2015-09-27 
) 

$result_sat = Array 
(
    [0] => 2015-09-19 
) 

那麼,爲什麼差異不會發生?

+1

你唯一的參數array_merge是1數組?如果你只給1個數組提供數組,你是否想要處理數組? –

+0

粘貼數組和預期的輸出 – jitendrapurohit

+1

查看文檔[array_diff](http://php.net/manual/en/function.array-diff.php) 它聲明只有第一個數組中的值如果在其他陣列中找不到它們將被返回。 它不會像你期望使用'git diff'或類似命令那樣執行'diff'。 – segFault

回答

1
$result1 = array_diff($result_sun,$result_sat); 
$result2 = array_diff($result_sat,$result_sun); 

$result=array_merge($result1,$result2); 

將$ result_sun與一個或多個其他數組進行比較,並返回$ result_sun中不存在於任何其他數組中的值。 所以把兩者的差異,然後合併它將是很好,如果你把你的代碼,那麼我們可以給出更準確的答案