比较 php 数组键值


Comparing php array key value

我正在尝试比较两个数组值。 我的数组 1 就像

$a1 = array('123' => 'test1', '456' => 'test2', '789' => 'test3');

数组 2 就像

$a2 = array('456' => 'match2', '99' => 'match3');
$a3 = array();

我想比较键值。如果array1键与键匹配array2array1元素推送到新数组

我有

  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);