2017-09-13 5 views
1

현재 배열로 2 차원 배열로 값을 가진 요소를 삽입합니다내가이 같은 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' 
), 
); 

나는 새로운 요소를 추가하여 3 차원 배열에 배열을 분할 할 다음과 같이 '-'

$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 당신을 도울 수있어서 다행 :) :) –