2014-04-24 52 views
0

關聯數組結合我具有低於此關聯數組:如何通過索引

Array 
(
[0] => Array 
    (
     [0] => Category 
     [1] => fruit 
     [2] => carbs 
    ) 

[1] => Array 
    (
     [0] => Day 1 - Program 
     [1] => Eat banana 
     [2] => Eat bread 
    ) 

[2] => Array 
    (
     [0] => Day 1 - record 
     [1] => 
     [2] => 
    ) 

) 

每個數組索引涉及在其他陣列相同的索引。 我需要現在通過組合索引來創建3個數組。完成的陣列將 是這樣的:

Array 
(
    [0] => Array 
    (
     [0] => Category 
     [1] => Day 1 - Program 
     [2] => Day 1 - record 
    ) 

    [1] => Array 
    (
     [0] => fruit 
     [1] => Eat banana 
     [2] => 
    ) 

    [2] => Array 
    (
     [0] => carbs 
     [1] => bread 
     [2] => 
    ) 
) 

空槽,我知道把一個文本框來記錄數據。 我試過嵌套循環和其他東西,但沒有任何工作。 如何將數組組合成基於索引的多維數組?

回答

1

您可以使用嵌套循環來實現此目的。首先循環訪問子陣列。在每次迭代中,遍歷子數組中的元素,並將它們添加到結果數組中。這裏的重要部分是我們用作$result陣列的索引。 $index將是數組元素在子數組中的位置。例如,Category的索引將爲0,因此它將推送至$result[0][]

foreach ($array as $sub) { 
    foreach ($sub as $index => $val) { 
     $result[$index][] = $val; 
    } 
} 

print_r($result); 

Demo

+0

謝謝!我選擇了你的代碼,因爲代碼更短。男人,我在那上了三個小時。 – Naterade

+0

@Naterade:很高興見到你至少嘗試過。是的,有時你會馬上找到你想要的東西,有時你需要花費數小時才能完成工作。但我相信,憑藉經驗,您將能夠更快地解決問題。乾杯! –

1

這裏有一個快速的方法 - 它本質上翻轉鍵。順便說一句,你有第一個數組是索引數組,而不是關聯數組。

$input = array(
array 
    (
    "Category", "fruit", "carbs" 
    ), 

array 
    (
     "Day 1 - Program","Eat banana","Eat bread" 
    ), 

array 
    (
    "Day 1 - record", "", "" 
    ) 

); 

foreach ($input as $key => $array){ 
    foreach ($array as $k => $v){ 
     $output[$k][$key] = $input[$key][$k]; 
    } 
} 

print_r($output); 
2
$output = call_user_func_array(
    'array_map', 
    array_merge(
     array(NULL), 
     $input 
    ) 
); 

Demo

+3

從PHP 5.6.0開始,'array_map(null,... $ input)' – salathe