2013-09-30 233 views
0

我想比较两个数组值。我的阵列1就像是比较php数组键值

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

数组2就像

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

$a3 = array(); 

我要比较的键值。如果array1array2密钥相匹配,推动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]; 
     } 
    } 

有人能帮助我在这?非常感谢!

+5

你看过[array_intersect_key()](http://www.php.net/manual/en/function.array-intersect-key.php)吗? –

+1

开始认为我应该在评论部分开始张贴我的答案。 –

回答

2

您可以使用array_intersect_keyhttp://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函数。

+0

试着详细阐述一点答案,而不是只是链接,写一些代码:) – SERPRO

+1

@SERPRO:完成:) –

0

这应该工作,虽然我没有测试它

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

您遍历的$ A1所有elments并检查该键在$ A2存在。如果是你的元素添加到$ A3(上面的代码与现有的键添加它,如果你想放弃的按键,只需使用$ A3 [] = $ V1)

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