2014-09-29 78 views
0

我有2個陣列找到差異PHP和array_diff_assoc()比較多deminsions陣列

數組1

array (size=5) 
    0 => 
    array (size=1) 
     'id' => string '1' (length=1) 
    1 => 
    array (size=1) 
     'id' => string '2' (length=1) 
    2 => 
    array (size=1) 
     'id' => string '3' (length=1) 
    3 => 
    array (size=1) 
     'id' => string '4' (length=1) 
    4 => 
    array (size=1) 
     'id' => string '5' (length=1) 

數組2

array (size=1) 
    0 => 
    array (size=1) 
     'user_id' => string '1' (length=1) 

我用array_diff_assoc函數來獲得差異。

問題:

Notice: Array to string conversion at array_diff_assoc() 

是否有功能,可以在陣列比較數組?

回答

0

只是array_column嘗試:

$array1 = array(
    array('id' => 1), 
    array('id' => 2), 
    array('id' => 3), 
    array('id' => 4), 
    array('id' => 5), 
); 
$array2 = array(
    array('user_id' => 1), 
); 

$diff = array_diff(array_column($array1, 'id'), array_column($array2, 'user_id')); 

var_dump($diff); 

輸出:

array (size=4) 
    1 => int 2 
    2 => int 3 
    3 => int 4 
    4 => int 5 
0

我覺得你應該使用array_diff_key()代替array_diff_assoc()因爲array_diff_assoc()不進行遞歸搜索。它嘗試通知用戶,其中一個數組中的值也是一個數組,並且必須將其轉換爲字符串。