Search code examples
phparraysarray-difference

PHP array_diff_assoc () compare multi-deminsions arrays


I have 2 arrays to find difference

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)

I use array_diff_assoc function to get difference.

Problem:

Notice: Array to string conversion at array_diff_assoc()

Is there function that can compare arrays in arrays?


Solution

  • Just try with 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);
    

    Output:

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