2017-09-13 11 views
1

として値を2次元配列に要素を挿入します。私は、新しい要素を追加することで、3D配列に配列を分割したい現在、私はこのようなbasiccalyである2次元配列、持って配列

$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' 
), 
); 

をこのように:「 - 」

$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あなたを助けてうれしい:) :) –

関連する問題