2011-11-23 86 views
0

基本上我的數組嵌套太深。它有三個子,子,子陣列,我只想保持中間一個。如何減少數組嵌套

我覺得很難解釋,但我已經是這樣的:

"data": [ 
    { 
    "order": 
     { 
     "id": "1,", 
     "mail": { 
     "mail1": "X"; 
     "mail2": "X"; 
     }, 
     }, 
     { 
     "id": "2,", 
     "amount": "X", 
     }, 
    } 
], 
"data": [ 
    { 
    "order": { 
     "id": "3,", 
     "amount": "X", 
     }, 
    } 
], 

我需要刪除第一個和最後一個子陣列,所以我只得到只有一個窩:

 [1] { 
     "id": "[email protected],", 
     "mail1": "X", 
     "mail2": "X", 
     }, 
    [2] { 
     "id": "2,", 
     "amount": "X", 
     }, 
    [3] { 
     "id": "3,", 
     "amount": "X", 
     }, 

我不知道這是否合理。我確信這不是很難做到,但我只設法創建一個包含所有值的數組的foreach,但是我失去了所有的子數組。

這是如何完成的? (至少刪除第一個數組)。

+0

該數組結構看起來不正確。要麼它嵌套錯誤,要麼你在同一個數組中有兩個'order'鍵,這是不可能的。請提供一個準確的例子。 – deceze

+0

對不起,我剛剛糾正它。 – lisovaccaro

+0

@ Liso22:不,你沒有。你的數組仍然不正確。請準確地提供您想要處理的正確數組並正確排列陣列。在真實數組上使用'var_dump()'或'print_r()'會比提供不正確的JSON更有幫助。 – Tadeck

回答

0

你的陣列結構仍然是無效的,所以我不能肯定地說,但這些方針的東西應該做的:

$result = array(); 
foreach ($array['data'] as $order) { 
    $order = $order['order']; 
    if (isset($order['mail'])) { 
     $order = array_merge($order, $order['mail']); 
     unset($order['mail']); 
    } 
    $result[] = $order; 
} 
0

試試這個:

 
$finalArr = array(); 
foreach($data as $key => $val) { 
    array_push($finalArr, $val); 
} 
print_r($finalArr); 

希望它可以幫助