2015-10-29 78 views
1

我有一個多維數組,我需要合併所有的子值返回到它的父。合併所有子值返回到父多維數組php

說我有一個這樣的數組:

array(2) { 

     [XY] => 
     array(3) { 
       [A]=> 20 
       [B]=> 30 
       [2]=> 
       array(2) { 
          [0]=> 1 
          [1]=> 2 
         } 
       } 
     [YZ] => 
     array(3) { 
       [A]=> 60 
       [B]=> 50 
       [2]=> 
       array(2) { 
          [0]=> 3 
          [1]=> 4 
         } 
       } 
} 

,我想這樣的輸出:

array(2) { 

     [XY] => 
     array(4) { 

       [A]=> 20 
       [B]=> 30 
       [2]=> 1 
       [3]=> 2 
       } 
     [YZ] => 
     array(4) { 

       [A]=> 60 
       [B]=> 50 
       [2]=> 3 
       [3]=> 4        
       } 
} 

我怎樣才能做到這一點?

回答

0

這裏是您的解決方案的工作遞歸,並給予任何孩子家長元(LVL 1個父)注:年底的水平童車給拉特1父

function giveChildToParentLevel($array) 
    { 

     $countOfArray = count($array); 

     foreach($array as $key=>$value) 
     { 

      if(is_array($value)) 
      { 

       $childitems = giveChildToParentLevel($value); 

       if(count($childitems) > 0) 
       { 
        unset($array[$key]); 
        $i = 0; 
        foreach($childitems as $child) 
        { 
         if($i == 0) 
          $array[$key] = $child; 
         else 
          $array[$key.$i] = $child; 

         $i++; 
        } 
       } 


      } 


     } 

     return $array; 
    } 

    $array = //your array; 
    foreach($array as $key=>$value) 
    { 
     $array[$key] = giveChildToParentLevel($value); 
    } 
    print_r($array); 
+0

嗨!感謝回覆。但是這只是返回了我只根據我的要求不正確的子數組。 –

+0

@JasveenKaur我更新了我的答案,看看我如何在代碼的末尾使用它 –