2013-09-30 3 views
0

두 배열 값을 비교하려고합니다. 내가 키 값을 비교하려는 PHP 배열 키 값 비교

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

$a3 = array(); 

처럼 배열 2가
$a1 = array('123' => 'test1', '456' => 'test2', '789' => 'test3'); 

처럼 내 배열 1이다. 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 
) 

이것은 당신이 직후 무엇입니까? 그것은 네이티브 PHP 함수이기 때문에 for 루프보다 빠릅니다.

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