匹配两个数组值并生成值相同的键数组 我设法解决这个问题,如下所述,但两个数组都可能包含大量记录, 那么有谁能建议更优化的解决方案? 结果应与现在相同
$arr1 = array(
105 => '101,Utility,\N',
102 => '101,Utility,\N',
103 => '105,Parker,Peter',
104 => 'Rahul Ippar'
);
$arr2 = array(
108 => '101,Utility1,Floor',
120 => '101,Utility2,\N',
130 => '105,Parker,Peter',
140 => 'Rahul Ippar'
);
$arr3 = array_intersect( $arr2, $arr1 );
$arr4 = array_flip( $arr1 );
foreach( $arr3 as $k => $v ) {
$arr3[$k] = $arr4[$v];
}
print_r($arr3);
结果应与以下相同
Array
(
[130] => 103
[140] => 104
)
答案 0 :(得分:1)
另一种选择是:
$result = array_combine(
array_keys(array_intersect( $arr2, $arr1 )),
array_keys(array_intersect( $arr1, $arr2 ))
);
它是否更快或更高效,我不知道,尽管它应该是因为它使用较少的数据副本(因此内存使用量较少),并且循环次数较少;但这是您需要用大量数据进行测试的东西