PHP array_diff_assoc()比较多个deminsions数组

时间:2014-09-29 10:26:39

标签: php arrays array-difference

我有2个数组来找到差异

数组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)

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()

是否有可以比较数组中数组的函数?

2 个答案:

答案 0 :(得分: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

答案 1 :(得分:0)

我觉得您应该使用array_diff_key()代替array_diff_assoc(),因为array_diff_assoc()不会递归搜索。它尝试通知用户数组中的一个值也是一个数组,并且必须将其转换为字符串。