array_udiff在不存在时返回差异

时间:2017-11-07 16:03:48

标签: php multidimensional-array

我有以下2个数组:

$combos = array (
  0 =>
  array (
    1064 => '3438',
    1065 => '3440',
  ),
  1 =>
  array (
    1064 => '3439',
    1065 => '3440',
  ),
  2 =>
  array (
    1064 => '3438',
    1065 => '3441',
  ),
  3 =>
  array (
    1064 => '3439',
    1065 => '3441',
  ),
);

$productCombos = array (
  0 =>
  array (
    1065 => '3440',
    1064 => '3438',
  ),
  1 =>
  array (
    1065 => '3441',
    1064 => '3438',
  ),
  2 =>
  array (
    1065 => '3440',
    1064 => '3439',
  ),
  3 =>
  array (
    1065 => '3441',
    1064 => '3439',
  ),
);

然后我使用array_udiff查看$combos$productCombos是否包含所有相同的数组:

$diff = array_udiff($combos, $productCombos, function($a, $b) {
    if ($a < $b)  return -1;
    else if ($a > $b) return 1;
    else return 0;
});

返回:

array (
  2 =>
  array (
    1064 => '3438',
    1065 => '3441',
  )

但我不明白为什么,因为这个数组包含在两个变量中。换句话说:

$combos = array (
    2 =>
        array (
            1064 => '3438',
            1065 => '3441',
        )
    );

$productCombos = array(
    1 =>
        array (
            1065 => '3441',
            1064 => '3438',
        )
    );

$combos[2] == $productCombos[1] // true

那么为什么array_udiff会将此作为差异返回?

0 个答案:

没有答案