我想比较两个数组值。我的array1就像
$a1 = array('123' => 'test1', '456' => 'test2', '789' => 'test3');
array2就像
$a2 = array('456' => 'match2', '99' => 'match3');
$a3 = array();
我想比较关键值。如果array1
键与array2
键匹配,请将array1
元素推送到新数组
我有
for($i=0; $i < count($a1); $i++){
//i am not sure how to write my codes heree......
if($a1[$i]==a2[$i]{
$a3[]=a1$[$i];
}
}
有人可以帮我解决这个问题吗?非常感谢!
答案 0 :(得分:2)
您可以使用array_intersect_key
http://www.php.net/manual/en/function.array-intersect-key.php
代码:
$a1 = array('123' => 'test1', '456' => 'test2', '789' => 'test3');
$a2 = array('456' => 'match2', '99' => 'match3');
$a3 = array_values(array_diff_key($a1, $a2));
print_r($a3);
输出:
Array
(
[0] => test1
[1] => test3
)
这就是你追求的对吗?它应该比for循环更快,因为它是一个原生的PHP函数。
答案 1 :(得分:0)
这应该有效,但我还没有测试过它
foreach ($a1 as $k1 => $v1) {
if (isset($a2[$k1]))
$a3[$k1] = $v1;
}
循环遍历$ a1的所有元素并检查$ a2中是否存在该键。如果是,你将元素添加到$ a3(上面的代码将其添加到现有密钥,如果你想丢弃密钥,只需使用$ a3 [] = $ v1;)
答案 2 :(得分:0)
$a1= array('123' => 'test1', '456' => 'test2', '789' => 'test3');
$a2=array('456' => 'match2', '99' => 'match3');
$ai = array_intersect_key($a1, $a2);
$a3 = array_values($ai);