【发布时间】:2015-03-05 02:58:21
【问题描述】:
让我们继续。为什么array_uintersect 在sorting 之后的第一个数组中没有compare values?我的拙见array_udiff 和array_uintersect 应该有类似的算法,但他们没有。为什么?
$compare = function($a, $b) use(&$iteration_count)
{
echo("$a : $b\n");
$iteration_count++;
return strcmp($a, $b);
};
$a = array('a', 'b', 'c');
$b = array('x', 'y', 'z');
$iteration_count = 0;
echo "array_udiff:" . json_encode(array_udiff($a, $b, $compare)) . "\n";
echo "iterations: $iteration_count\n\n";
$iteration_count = 0;
echo "array_uintersect:" . json_encode(array_uintersect($a, $b, $compare)) . "\n";
echo "iterations: $iteration_count\n\n";
输出
b : a
c : b
y : x
z : y
a : x
a : b
b : x
b : c
c : x
array_udiff:["a","b","c"]
iterations: 9
b : a
c : b
y : x
z : y
a : x // comparison started
b : x // but there is no comparison to skip values
c : x
array_uintersect:[]
iterations: 7
【问题讨论】: