2014-02-21 93 views
0

我有一個問題當我想要重建我的數組。 這是我在phpfiddle.org創建如何使用PHP在一個數組中合併數組?

http://phpfiddle.org/main/code/tzp-t1u

誰能給我建議?

+1

您可能需要提供更多的一些信息; - 關於合併數組有什麼規則(是否有一個公共密鑰,是否有匹配的值?) - 是否總是隻有3個索引開始,等等。 – roycable

+0

您將不得不迭代拋出數組。數組合並不會合併現有密鑰的值。它只是合併兩個數組在一起,並保留重複的鍵未觸及 – Krimson

+0

發佈您的數組生成代碼與幾個樣本數組,我真的不能得到什麼是你的輸出和你想要它。 –

回答

1

此代碼將幫助您

<?php 

$result = array (
     array(
       'lev1'=> null, 
       'lev2'=> 34, 
       'lev3'=> 21, 
       'lev4'=> 22, 
       'child' => 'cyaiooo' 
     ), 
     array(
       'lev1'=> null, 
       'lev2'=> 34, 
       'lev3'=> 10, 
       'lev4'=> 8, 
       'child' => 'test1' 
     ), 
     array(
       'lev1'=> null, 
       'lev2'=> 34, 
       'lev3'=> 21, 
       'lev4'=> 22, 
       'child' => 'hodem' 
     ) 
); 

$data = array(); 

foreach($result as $value) 
{ 
    if(count($data)==0) 
    { 
     $data[] = $value; 

    }else{ 

     foreach($data as &$container) 
     { 
      if($value['lev1']==$container['lev1'] 
        && 
       $value['lev2']==$container['lev2'] 
        && 
       $value['lev3']==$container['lev3'] 
        && 
       $value['lev4']==$container['lev4']) 
      {    

       if(is_string($container['child'])) 
       { 
        //get the string value 
        $string = $container['child']; 

        //unset the child string 
        unset($container['child']); 

        //declatre the array 
        $container['child'] = array(); 

        $container['child'][] = $string; 
       } 

       $container['child'][] = $value['child']; 

       break; 

      }else{ 
       $data[] = $value; 
       break; 
      } 
     } 

    } 
} 

print_r($data); 
+0

爲你的答案真的我很感激,這真的幾乎就像我想要的,但孩子的價值結果爲字符串,在我的目標值是數組。 – viyancs

+0

@viyancs你可以嘗試一點,以實現結果。無論如何,我修改,請檢查更新的答案 – Sundar

+0

狗屎..很好..謝謝你。 – viyancs