2013-10-16 71 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; 


    }