将值为数组的元素插入到2d数组中

时间:2017-09-13 01:48:18

标签: php multidimensional-array element

目前,我有一个2d数组,基本上是这样的:

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

我尝试用' - '拆分所有键并将它们添加到另一个数组,但我不知道如何添加一个名为'items'的新元素并将值插入其中。

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

有什么方法可以拆分我原来的阵列吗?任何答案都将不胜感激!

1 个答案:

答案 0 :(得分: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