以下是使用array_intersect_uassoc()的示例。
我故意让密钥不同,所以你可以分辨哪一个来自哪个数组。
$array1 = array("LEFT a" => "green", "LEFT b" => "brown", "LEFT c" => "blue"); $array2 = array("RIGHT a" => "GREEN", "RIGHT B" => "brown", 'RIGHT y' => "yellow"); array_intersect_uassoc($array1, $array2, function($a, $b) { print_r("$a -- $b"); return 0; });
在输出中,我看到两个LEFT键和两个RIGHT键的比较。
这究竟是什么意思呢?
答案 0 :(得分:0)
查看函数的逻辑代码(我简化了一下):
function array_intersect_uassoc($args, compare_func)
{
$result = array();
$array_count = count($args);
foreach ($args[0] as $k => $v) {
for ($i = 0; $i < $array_count; $i++) {
$match = false;
foreach ($args[$i] as $kk => $vv) {
$compare = call_user_func_array($compare_func, array($k, $kk));
if ($compare === 0 && $v == $vv) {
$match = true;
continue 2;
}
}
if ($match === false) {
continue 2;
}
}
if ($match === true) {
$result[$k] = $v;
}
}
return $result;
}
这可以帮助您看到键不是唯一检查的键,但更重要的是值。