2017-09-13 37 views
1

目前,我有一個二維數組,這是basiccaly這樣的:插入到一個二維數組與值的元素作爲數組

$oriArr = array(
    [0]=>array(
    '1'=>'a', 
    '2'=>'b', 
    '3-1'=>'c', 
    '4-1'=>'d', 
    '3-2'=>'c1', 
    '4-2'=>'d1' 
), 
    [1]=>array(
    '1'=>'a', 
    '2'=>'b', 
    '3-1'=>'c', 
    '4-1'=>'d', 
    '3-2'=>'c1', 
    '4-2'=>'d1', 
    '3-3'=>'c2', 
    '4-3'=>'d2' 
), 
); 

我想通過添加新的元素到所述陣列成3D陣列分割像這樣:

$resArr= array(
     [0]=>array(
     [1]=>'a', 
     [2]=>'b', 
     ['items']=>array(
      [1]=>array(
       '3-'=>'c', 
       '4-'=>'d', 
      ), 
      [2]=>array(
       '3-'=>'c1', 
       '4-'=>'d1', 
      ) 
     ),   
    ), 
     [0]=>array(
     [1]=>'a', 
     [2]=>'b', 
     ['items']=>array(
      [1]=>array(
       '3-'=>'c', 
       '4-'=>'d', 
      ), 
      [2]=>array(
       '3-'=>'c1', 
       '4-'=>'d1', 
      ), 
      [3]=>array(
       '3-'=>'c2', 
       '4-'=>'d2', 
      ) 
     ),   
    ), 
    ); 

我試圖分裂所有的鑰匙「 - 」,並將它們添加到另一個陣列,但我不知道如何添加一個名爲「項目」新元素和值插入到它。

foreach($oriArr as $lines){    
    foreach($lines as $keys){ 
    $keyArr= array();     
    if (strpos($keys, '-') !== false) { 
      $keyArr[] = $keys; 
    } 
    }    
} 

有什麼辦法可以拆分我的原始數組嗎?任何答案將不勝感激!

+0

好的,謝謝我錯過了。編輯! – Tedxxxx

回答

1

你必須這樣做象下面這樣: -

$final_array = array(); 
foreach($oriArr as $key=>$oriAr){ 
    $items = array(); 
    foreach($oriAr as $k=>$oriA){ 
     $exploded_key = explode('-',$k); 
     if(count($exploded_key) ==2){ 
     $items['items'][$exploded_key[1]][$exploded_key[0].'-'] = $oriA; 
     }else{ 
     $items[$k]=$oriA; 
     } 
    } 
    $final_array[$key] = $items; 
} 

print_r($final_array); 

輸出: - https://eval.in/860368

+0

非常感謝。有效。我對多維數組相當陌生。 – Tedxxxx

+0

@Tedxxxx很高興幫助你:) :) –

相關問題