2013-04-24 56 views
0

我一直在努力與這個嵌套數組,所以我最終決定要求這方面的一些幫助。我正在嘗試將下面的嵌套數組更正爲其他內容。請回答代碼示例/解決方案。我不是最好的PHP程序員。謝謝大家!PHP:如何修復嵌套數組

我希望它是什麼樣子:

array 
    0 => 
     'enginename' => string 'Engine1' (length=19) 
     'status' => string 'up' (length=2) 
     'time' => string '2013-04-17 09:28:00' (length=19) 
    1 => 
     'enginename' => string 'Engine2' (length=19) 
     'status' => string 'up' (length=2) 
     'time' => string '2013-04-17 09:28:00' (length=19) 

什麼它目前看起來像:

Writing data... 
The total # of columns in this query are: 3 
The length of the first array is: 363 
array 
    0 => 
    array 
     0 => 
     array 
      'enginename' => string 'Engine1' (length=19) 
     1 => 
     array 
      'status' => string 'up' (length=2) 
     2 => 
     array 
      'time' => string '2013-04-17 09:28:00' (length=19) 
    1 => 
    array 
     3 => 
     array 
      'enginename' => string 'Engine2' (length=20) 
     4 => 
     array 
      'status' => string 'up' (length=2) 
     5 => 
     array 
      'time' => string '2013-04-17 09:28:00' (length=19) 
    2 => 
    array 
     6 => 
     array 
      'enginename' => string 'Engine3' (length=30) 
     7 => 
     array 
      'status' => string 'up' (length=2) 
     8 => 
     array 
      'time' => string '2013-04-17 09:28:00' (length=19) 

更新4/24 10:26 AM我:: bwoebi的示例輸出 這很好,謝謝你,但不是我需要的100%。它刪除嵌套的數組,但也分開了所有的關鍵。我需要像我的原始示例所示的一個「組」中的前3個鍵。

更新4/24 10:36 :: bwoebi的更正示例輸出

array 
    0 => 
    array 
     'enginename' => string 'Engine1' (length=19) 
     'status' => string 'up' (length=2) 
     'time' => string '2013-04-17 09:28:00' (length=19) 
    1 => 
    array 
     'enginename' => string 'Engine2' (length=20) 
     'status' => string 'up' (length=2) 
     'time' => string '2013-04-17 09:28:00' (length=19) 
    2 => 
    array 
     'enginename' => string 'Engine3' (length=30) 
     'status' => string 'up' (length=2) 
     'time' => string '2013-04-17 09:28:00' (length=19) 

回答

2
foreach ($array as &$oldArray) { 
    $newArray = array(); 
    foreach ($oldArray as $subArray) 
     $newArray += $subArray; 
    $oldArray = $newArray; 
} 

這工作的狀況下,你的鑰匙並不在零開始每次(如你的示例數組顯示它)。如果他們這樣做,請使用array_merge

+0

@Baba http://eval.in/17462 ...? – bwoebi 2013-04-24 14:29:20

+0

非常感謝!這正是我需要的。你終於解決了我的9小時問題! – devnull 2013-04-24 14:38:24

0

您可以嘗試

$array = array_map(function ($v) { 
    return array_map("current", $v); 
}, $array); 

print_r($array); 

輸出

Array 
(
    [0] => Array 
     (
      [0] => Engine1 
      [1] => up 
      [2] => 2013-04-17 09:28:00 
     ) 

    [1] => Array 
     (
      [0] => Engine2 
      [1] => up 
      [2] => 2013-04-17 09:28:00 
     ) 

    [2] => Array 
     (
      [0] => Engine3 
      [1] => up 
      [2] => 2013-04-17 09:28:00 
     ) 

) 

Live Demo

+0

我知道,你真的很喜歡array_map,但是在這裏它不會顯示出高性能,而且對於這樣一個簡單的用例來說它更容易混淆。 – bwoebi 2013-04-24 14:20:59

+0

你的代碼實際上不起作用... http://eval.in/17458就是微優化的性能 – Baba 2013-04-24 14:22:57

+1

對不起,我誤解了答案;更新了我的答案。是的,現在是微型優化。但在我的代碼是O(n)之前,你的是O(n * m)...;) – bwoebi 2013-04-24 14:28:58