我有以下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
会将此作为差异返回?