Php 将二维数组转换为多维数组

Php 将二维数组转换为多维数组,php,arrays,multidimensional-array,Php,Arrays,Multidimensional Array,我有这个阵列: $data=array( array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>18,'content'=>'roses'), array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>22,'content'=>'daisies'), array('id'=>38,'nam

我有这个阵列:

$data=array(
   array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>18,'content'=>'roses'),
   array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>22,'content'=>'daisies'),
   array('id'=>38,'name'=>'box2','color'=>'green','content_id'=>22,'content'=>'daisies'),

);
我想用这个结构来转换它:

  $structure = array('id'=>
    array('name','color','content_id'=>array(
      'content')));
    function x_array($data,$struc,$first=true)
    {
        foreach ($struc as $struc_field=>$inner_struc)
        {
            if (!is_array($inner_struc))
                {$result[$inner_struc]=$data[$inner_struc];}
            else {
                $res=x_array($data,$inner_struc,false);

                //ignore the first field name and use it's value as key instead
                if ($first) {$result[$data[$struc_field]]=$res;}
                else {$result[$struc_field][$data[$struc_field]]=$res;}

                }

        }
        return $result;

    }
因此,它变成:

array(
  '12'=>array('name'=>'box1','color'=>'red','content_id'=>array(
     '18'=>'roses',
     '22'=>'daisies')),
   '38'=>array('name'=>'box2','color'=>'green','content_id'=>array(
     '22'=>'daisies'))
);
我创建了一个用于单个$data数组(即x_数组($data[0],$structure))的函数:

查询地址:

但是,当涉及到集成多个阵列的信息而不复制或覆盖信息时,我仍然无法确定下一步要做什么。注意,我发布了一个简化的数据和结构数组,最后的函数应该能够管理任何结构深度和任何数量/名称的字段。 任何帮助都将不胜感激。

试试以下方法:

$data=array(
   array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>18,'content'=>'roses'),
   array('id'=>12,'name'=>'box1','color'=>'red','content_id'=>22,'content'=>'daisies'),
   array('id'=>38,'name'=>'box2','color'=>'green','content_id'=>22,'content'=>'daisies'),

);

$res = array();
foreach($data as $key=>$val){
   $res[$val['id']]['name']          = $val['name'];
   $res[$val['id']]['color']         = $val['color'];
   $res[$val['id']]['content_id'][$val['content_id']]  = $val['content'];
}

echo "<pre>";
print_r($res);

谢谢是的,这可能会起作用,但是,正如我所说的,我正在尝试做一个通用函数,而不是一个特定于数组结构的函数
Array
(
    [12] => Array
        (
            [name] => box1
            [color] => red
            [content_id] => Array
                (
                    [18] => roses
                    [22] => daisies
                )

        )

    [38] => Array
        (
            [name] => box2
            [color] => green
            [content_id] => Array
                (
                    [22] => daisies
                )

        )

)