2013-10-16 69 views
0

我需要幫助!表強調爆炸,對多維數組

我有一個這樣的數組,但我不知道如何引爆一個多維ARRY:

array() { 
    ["id"]=> 
    string(1) "1" 
    ["offer_id"]=> 
    string(3) "123" 
    ["product_id"]=> 
    string(3) "123" 
    ["product_x"]=> 
    string(3) "123" 
    ["product_x_t"]=> 
    string(3) "123" 
    ["product_x_z"]=> 
    string(3) "123" 
    ["product_x_z_a"]=> 
    string(3) "123" 

} 

,並希望它這樣的:

array(){ 
    ["id"]=> 
    string(1) "1" 
    ["offer"]=> 
    string(3) "123" 
    ["id"]=> 
    string(3) "123" 
    ["product"]=> 
    string(3) "123" 
     ["id"]=> 
     string(3) "123" 
     ["x"]=> 
     string(3) "123" 
      ["t"]=> 
      string(3) "123" 
      ["z"]=> 
      string(3) "123" 
       ["a"]=> 
       string(3) "123" 

但我真的沒有任何想法!

+2

可以喲你真的顯示你想要的代碼?因爲你顯示的是控制檯輸出,而不是實際的PHP。你的第一個塊是'陣列(「ID」 => 1,「offer_id => 123,...)'的實例。此外,頭部到php.net和查找如何做到這一點通過搜索陣列的文檔功能閱讀它們,試戴,而當你終於用盡你的選擇,然後* *問你的問題在這裏。我們願意幫助,但如果你不這樣做已經自己的研究首先,我們是不得已而爲之,不第一個 –

+2

你有沒有至少嘗試過一些東西呢?它不需要工作,甚至不需要關閉,但是我懷疑如果你沒有發佈它,你就會被忘記成爲遺忘 –

+2

什麼應該存儲在newArray ['product' ]?從你品嚐它應該是字符串和數組在同一時間使用 –

回答

2

其實,你不能這樣做。值不能同時是一個字符串和一個數組。

$value['product']['x'] = "123"; 
$value['product']['x'] = array('t'=>'some_value', 'z' => 'some_value'); 
0

好吧我知道了......其實它不是遞歸,但不會有那麼多的情況下,我覺得...

function plode($val) { 
    $arr = array(); 
     foreach($val as $key => $valval) { 
      $po = explode("_", $key); 
      $co = count($po); 

      switch($co){ 
       case 1: 
        $arr[$key] = $valval; 
        break; 
       case 2: 
        $arr[$po[0]][$po[1]] = $valval; 
        break; 
       case 3: 
        $arr[$po[0]][$po[1]][$po[2]] = $valval; 
        break; 
       case 4: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]] = $valval; 
        break; 
       case 5: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]] = $valval; 
        break; 
       case 6: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]][$po[5]] = $valval; 
        break; 
       case 7: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]][$po[5]][$po[6]] = $valval; 
        break; 
      } 
     } 

     return $arr; 

} 

像陣列(「values_sale_rent_x_y_z_j」的阿雷的結果= > 100,...)

array(8) { 
    ["id"]=> 
    string(1) "1" 
    ["offer"]=> 
    array(1) { 
    ["id"]=> 
    string(3) "123" 
    } 
    ["product"]=> 
    array(1) { 
    ["id"]=> 
    string(3) "123" 
    } 
    ["selected"]=> 
    string(1) "1" 
    ["active"]=> 
    string(1) "1" 
    ["amount"]=> 
    string(3) "123" 
    ["payments"]=> 
    string(4) "sale" 
    ["values"]=> 
    array(1) { 
    ["rent"]=> 
    array(1) { 
     ["min"]=> 
     array(2) { 
     ["discount"]=> 
     string(1) "0" 
     ["default"]=> 
     string(1) "0" 
     } 
    } 
    } 
} 
0

決賽:

function plode($val, $bool = false, $deli='_') { 
     $arr = array(); 
     foreach($val as $key => $valval) { 
      $po = explode($deli, $key); 
      $co = count($po); 

      switch($co){ 
       case 1: 
        $arr[$key] = $valval; 
        break; 
       case 2: 
        $arr[$po[0]][$po[1]] = $valval; 
        break; 
       case 3: 
        $arr[$po[0]][$po[1]][$po[2]] = $valval; 
        break; 
       case 4: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]] = $valval; 
        break; 
       case 5: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]] = $valval; 
        break; 
       case 6: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]][$po[5]] = $valval; 
        break; 
       case 7: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]][$po[5]][$po[6]] = $valval; 
        break; 
       case 8: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]][$po[5]][$po[6]][$po[7]] = $valval; 
        break; 
       case 9: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]][$po[5]][$po[6]][$po[7]][$po[8]] = $valval; 
        break; 
       case 10: 
        $arr[$po[0]][$po[1]][$po[2]][$po[3]][$po[4]][$po[5]][$po[6]][$po[7]][$po[8]][$po[9]] = $valval; 
        break; 
      } 
     } 
     if($bool) return json_decode(json_encode($arr)); 
     else return $arr; 


    }