我有以下简单的功能,试图了解array_udiff()
功能了解array_udiff()
function udiffCompare($value, $value2)
{
echo $value . " - " . $value2 . "<br />";
}
$newArray = array(
'value2' => 2,
'value3' => 3,
'value4' => 4
);
$newArray2 = array(
'value2' => 2,
'value3' => 3,
'value4' => 4
);
array_udiff($newArray, $newArray2, 'udiffCompare');
我希望这只是返回:
但是它返回:
3 - 2
4 - 3
3 - 2
4 - 3
4 - 4
4 - 3
4 - 3
3 - 2
这使我相信有一些我真的不理解在这里关于array_udiff()
如何工作。
即使我更换echo语句以上:
if($value == $value2) { return 1; } else { return 0; }
输出的阵列完全是空的,即使传递给函数的所有值是相等的。
请问有人会发光吗?
http://stackoverflow.com/questions/10271708/how-does-array-udiff-work – underscore
即使我添加if($ value == $ value2){return 1; } else {return 0; }它仍然返回一个巨大的不同数字列表,这意味着即使所有的值都相等,我的输出数组也是完全空的。 –
你的回调函数是怪:'int回调(混合$ a,混合$ b)'应该是它的签名。虽然我会说'array_map'或'list'更适合你的用例 –