2014-09-29 2 views
0

у меня есть 2 массивы, чтобы найти разницуPHP array_diff_assoc() сравнить мульти-deminsions массивы

Array1

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) 

array2

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() не искать рекурсивно. Он пытается уведомить пользователя о том, что одно из значений в массиве также является массивом, и ему пришлось преобразовать его в строку.

 Смежные вопросы

  • Нет связанных вопросов^_^