比较php数组键值

时间:2013-09-30 15:52:10

标签: php arrays

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

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

3 个答案:

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