2013-09-30 4 views
0

Я пытаюсь сравнить два значения массива. Мой array1 подобенСравнение значения ключа массива php

$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]; 
     } 
    } 

Может кто-то помочь мне в этом? Большое спасибо!

+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: Done :) –

0

Это должно работать, хотя я не проверял это

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

Вы проходное всех элементов, входящих в $ a1 и проверить, что этот ключ существует в $ 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); 
Смежные вопросы