2012-08-07 1 views
0

이런 식으로 일을 기억할 수 있기 때문에 나는 지금 정말로 어리 석다. 하지만 지금은 내 머리가 비어 있고 이것은 정말로 문제처럼 보입니다.두 배열을 일치시켜 값 지정

두 개의 어레이가 있습니다. 첫째 :

array (
    0 => 
    array (
    'id' => '1', 
    'name' => 'Blizzard', 
    'slug' => 'blizzard', 
), 
    1 => 
    array (
    'id' => '2', 
    'name' => 'Id Software', 
    'slug' => 'id-software', 
), 
    2 => 
    array (
    'id' => '3', 
    'name' => 'Capcom', 
    'slug' => 'capcom', 
), 
    3 => 
    array (
    'id' => '4', 
    'name' => 'Maxis', 
    'slug' => 'maxis', 
), 
    4 => 
    array (
    'id' => '5', 
    'name' => 'Electronic Arts', 
    'slug' => 'electronic-arts', 
), 
) 

그리고 secound 하나 :

무엇 내가하고 싶은
array (
    0 => '3', 
    1 => '4', 
) 

secound 배열에서 값을 가지고 첫 번째의 값과 일치합니다. 어떻게해야합니까?

+0

'$ array1 [$ array2 [0]]'을 원하십니까? 또는 배열 1의 요소 중 하나의 'id'와 일치합니까? – Matt

+0

"첫 번째 값과 일치하는 것"은 무엇을 의미합니까 –

답변

1

, 나는 당신이 이미 id 값이 키 이상 작다는 것을 알고있는 경우이 경우, 당신은이 작업을 수행 할 수 있습니다, 당신은 id 값을 의미 있으리라 믿고있어 :

특정 id에 대한
foreach($second as $id) { 
    $key = $id - 1; 
    $row = $first[ $key ]; 
    echo $row['name']; 
} 

그렇지 않으면, 당신은 루프해야/검색 :

foreach($second as $id) { 
    foreach($first as $row) { 
     if($row['id'] == $id) { 
       echo $row['name']; break; 
     } 
    }   
} 

그러나, 또 다른 트릭은 그냥 배열 죄수를 얻을 수 있습니다 당신이 원하는 요소를 이닝은과 같이, array_filter()을 사용하는 것입니다

$second = array(3, 4); 
$keep = array_filter($first, function($el) use($second) { 
    return in_array($el['id'], $second); 
}); 

지금 $keep 당신이 원하는 두 값의 배열을 포함하고, 그에 따라 그들에 루프 할 수 있습니다.

+0

secound 솔루션이 효과적입니다. 나는 분명히 몇 달 전에 비슷한 것을하는 것을 기억할 수 있습니다. 음 ... 짧은 마음;) 고마워요! –

0

이와 비슷한?

당신이 "값"라고
$new_array = array(); 
foreach ($secoundarray as $key => $value) { 
    $new_array[$key] = $firstarray[$value]; 
}