如何在PHP中将多维数组更改为嵌套数组?

时间:2012-07-02 18:19:12

标签: php arrays multidimensional-array

如何转换以下数组:(假设我不知道数组和键名的深度有多少)

$array = array(     
'ycol'=>array('1'=>array( 'name1'=>array('data1',array('a','1'),'data3')),  
'2'=>array('name2'=>array('data1',array('b','2'),'data3')),           
'3'=>array('name3'=>array('data1',array('c','3'),'data3')),           
'4'=>array('name4'=>array('data1',array('d','4'),'data3')),           
'5'=>array('name5'=>array('data1',array('e','5'),'data3'))
); 

采用以下格式:(请告诉我如何使用递归)

$array = array(
array('head'=>'name1','head1'=>'data1','o1'=>'a','o2'=>'1','head2'=>'data3'),
array('head'=>'name2','head1'=>'data1','o1'=>'b','o2'=>'2','head2'=>'data3'),
array('head'=>'name3','head1'=>'data1','o1'=>'c','o2'=>'3','head2'=>'data3'),
array('head'=>'name4','head1'=>'data1','o1'=>'d','o2'=>'4','head2'=>'data3'),
array('head'=>'name5','head1'=>'data1','o1'=>'e','o2'=>'5','head2'=>'data3')
);

我是PHP新手,需要帮助!

谢谢!

1 个答案:

答案 0 :(得分:1)

假设您的语法和深度始终相同,可以如上所述进行上述操作。

有更简洁的方法可以做到这一点,但您没有提供任何尝试处理递归的内容。

$output = array();
foreach($array['ycol'] as $iteration){
    $head = array_keys($iteration);
    $sub = $head[0];
    $output[] = array(
        'head' => $sub, 
        'head1' => $iteration[$sub][0], 
        'o1' => $iteration[$sub][1][0],
        'o2' => $iteration[$sub][1][1], 
        'head2' => $iteration[$sub][2]
    );
}

$array = $output;

print_r($output);