0

我正在尝试比较两个数组值。我的 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];
        }
    }

有人可以帮我解决这个问题吗?非常感谢!

4

3 回答 3

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 函数。

于 2013-09-30T15:57:55.953 回答
0

这应该可以,虽然我没有测试过

foreach ($a1 as $k1 => $v1) {
   if (isset($a2[$k1]))
      $a3[$k1] = $v1;
}

你遍历 $a1 的所有元素并检查该键是否存在于 $a2 中。如果是,则将元素添加到 $a3(上面的代码将其与现有键一起添加,如果要丢弃键,只需使用 $a3[] = $v1;)

于 2013-09-30T15:56:50.677 回答
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);
于 2013-09-30T16:05:36.140 回答