2013-05-15 4 views
0

2 배열 있습니다. 출력 배열을 만들고 첫 번째 키/두 번째 키/값을 추가 할 수 있습니까? 내 배열과 같이 보인다 :배열 검색 및 PHP에서 결합

첫 번째 :

Array 
    (
     [0] => Array 
      (
       [id] => 11 
       [expire] => undefined 
      ) 

     [1] => Array 
      (
       [id] => 12 
       [expire] => undefined 
      ) 

     [2] => Array 
      (
       [id] => 6 
       [expire] => 8 
      ) 

     [3] => Array 
      (
       [id] => 10 
       [expire] => 4 
      ) 
    ) 

두 번째 :

내가 출력 배열 얻고 어떻게
Array 
    (
     [0] => Array 
      (
       [id] => 6 
       [realname] => to_es.gif 
       [extension] => gif 
       [filesize] => 57885 
      ) 

     [1] => Array 
      (
       [id] => 10 
       [realname] => to_joomla_2_customer_view.gif 
       [extension] => gif 
       [filesize] => 77182 
      ) 

     [2] => Array 
      (
       [id] => 11 
       [realname] => to_nl.gif 
       [extension] => gif 
       [filesize] => 10990 
      ) 

     [3] => Array 
      (
       [id] => 12 
       [realname] => to_PL_1.gif 
       [extension] => gif 
       [filesize] => 52826 
      ) 

    ) 

:

Array 
     (
      [0] => Array 
       (
        [id] => 6 
        [realname] => to_es.gif 
        [extension] => gif 
        [filesize] => 57885 
        [expire] => 8 
       ) 

      [1] => Array 
       (
        [id] => 10 
        [realname] => to_joomla_2_customer_view.gif 
        [extension] => gif 
        [filesize] => 77182 
        [expire] => 4 
       ) 

      [2] => Array 
       (
        [id] => 11 
        [realname] => to_nl.gif 
        [extension] => gif 
        [filesize] => 10990 
        [expire] => undefined 
       ) 

      [3] => Array 
       (
        [id] => 12 
        [realname] => to_PL_1.gif 
        [extension] => gif 
        [filesize] => 52826 
        [expire] => undefined 
       ) 

     ) 
+2

'foreach'는 여기에 아무 것도 없습니다; 너 뭔가 해봤 니? – Passerby

+0

배열 요소의 순서가 역할을합니까? 첫 번째 배열에서 index [0] 인 배열의 id는 11입니다. 두 번째 배열에서는 첫 번째 배열의 ID가 6입니다. 어떻게 병합 되길 원합니까? 배열 인덱스 나 ID로 병합 하시겠습니까? – thpl

+0

안녕하세요, 예, ID로 병합해야합니다. 색인이 아닙니다. – user889349

답변

1

모두 배열을 섞어 발견이 시도 : Ideone에

function my_array_merge($first,$second) { 
    $new = array(); 
    foreach ($first as $f_item) { 
     foreach ($second as $i => $s_item) { 
      if ($f_item['id']===$s_item['id']) { 
       $new[] = $f_item + $s_item; 
       unset($second[$i]); 
       break; 
      } 
     } 
    } 
    usort($new, function($a,$b) { 
     return $a['id'] - $b['id']; 
    }); 
    return $new; 
} 

예 : http://ideone.com/TQIIkH

+0

고마워요! 그것은 작동 ... – user889349

1

내가 랬있어 당신의 첫 번째 배열은 $array1이고 두 번째 배열은 $array2입니다. 첫 번째 배열 내에서 루프를 수행 한 다음 seco로 루프 할 수 있습니다. 차 id을 conmparing 때하는 새

$new_array = array(); 
for($i=0; $i<count($array1); $i++) 
{ 
    foreach($array2 as $key => $data) 
    { 
     if($data['id'] == $array1[$i]['id']) 
     { 
      $new_array[] = array('id' => $array1[$i]['id'], 'realname' => $data['realname'], 'extension' => $data['extension'], 'filesize' => $data['filesize'], 'expire' => $array1[$i]['expire']); 
     } 
    } 
} 

var_dump($new_array); 

이 출력됩니다

array(4) { 
[0]=> 
array(5) { 
    ["id"]=> 
    string(2) "11" 
    ["realname"]=> 
    string(9) "to_nl.gif" 
    ["extension"]=> 
    string(3) "gif" 
    ["filesize"]=> 
    string(5) "10990" 
    ["expire"]=> 
    string(9) "undefined" 
} 
    [1]=> 
    array(5) { 
    ["id"]=> 
    string(2) "12" 
    ["realname"]=> 
    string(11) "to_PL_1.gif" 
    ["extension"]=> 
    string(3) "gif" 
    ["filesize"]=> 
    string(5) "52826" 
    ["expire"]=> 
    string(9) "undefined" 
    } 
    // and so on 

live working code

+0

감사! 좋아 보인다. – user889349

+0

@ user889349 환영합니다 – Fabio