2012-02-11 172 views
1

我有以下兩個數組:合併PHP陣列,形成多維數組

Array ([Jonah] => 27 [Bianca] => 32

Array ([Jonah] => 2 [Bianca] => 7

是否有可能將它們合併在一起,從而形成該格式的多維數組?

Array ([0] => Array 
       ([name] => Jonah 
       [age] => 27 
       [number] => 2) 
     [1] => Array 
       ([name] => Bianca 
       [age] => 32 
       [number] => 7) 
    ) 
+1

那你試試? – Cfreak 2012-02-11 22:46:38

回答

3

按名稱鍵入的臨時數組存儲來自前兩個數組的值。然後,將臨時數組複製到一個最終的數字數組鍵:

$arr1 = array ('Jonah' => 27, 'Bianca' => 32); 
$arr2 = array ('Jonah' => 2, 'Bianca' => 7); 

$tmp = array(); 

// Using the first array, create array keys to $tmp based on 
// the name, and holding the age... 
foreach ($arr1 as $name => $age) { 
$tmp[$name] = array('name' => $name, 'age' => $age); 
} 

// Then add the number from the second array 
// to the array identified by $name inside $tmp 
foreach ($arr2 as $name => $num) { 
    $tmp[$name]['number'] = $num; 
} 

// Final array indexed numerically: 
$output = array_values($tmp); 
print_r($output); 

Array 
(
    [0] => Array 
     (
      [name] => Jonah 
      [age] => 27 
      [number] => 2 
     ) 

    [1] => Array 
     (
      [name] => Bianca 
      [age] => 32 
      [number] => 7 
     ) 

) 

注意:複製陣列,使其數值並不是必需的,如果你確定你的輸出數組被鍵入的最後一步按名字。在這種情況下,$tmp是最終產品。

+0

非常感謝,完美的作品! – user1092780 2012-02-11 23:06:21

3

好的。下面的功能應該得到你想要爲:

$people = array ('Jonah' => 27, 'Bianca' => 32); 
$numbers = array ('Jonah' => 2, 'Bianca' => 7); 
$merged = array(); 
$i = 0; 

foreach ($people as $k=>$v) 
{ 
    if (isset($numbers[$k])) 
    { 
     $merged[$i]['name'] = $k; 
     $merged[$i]['age'] = $v; 
     $merged[$i++]['number'] = $numbers[$k]; 
    } 
} 

現在,如果你做一個var_dump($merged);您將獲得:

array 
    0 => 
    array 
     'name' => string 'Jonah' (length=5) 
     'age' => int 27 
     'number' => int 2 
    1 => 
    array 
     'name' => string 'Bianca' (length=6) 
     'age' => int 32 
     'number' => int 7 
+0

非常感謝,完美的作品! – user1092780 2012-02-11 23:05:59