我正在尝试比较两个数组值。 我的数组 1 就像
$a1 = array('123' => 'test1', '456' => 'test2', '789' => 'test3');
数组 2 就像
$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];
}
}
有人可以帮助我解决这个问题吗?多谢!
您可以使用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 函数。
这应该有效,尽管我还没有测试过
foreach ($a1 as $k1 => $v1) {
if (isset($a2[$k1]))
$a3[$k1] = $v1;
}
您遍历 $a 1 的所有 elment,并检查该键是否存在于 $a 2 中。如果确实如此,则将元素添加到 $a 3(上面的代码使用现有键添加它,如果要丢弃键,只需使用 $a 3[] = $v 1;)
$a1= array('123' => 'test1', '456' => 'test2', '789' => 'test3');
$a2=array('456' => 'match2', '99' => 'match3');
$ai = array_intersect_key($a1, $a2);
$a3 = array_values($ai);