PHP将一维数组转换为嵌套数组 [英] PHP Convert single dimensional array to nested array

查看:130
本文介绍了PHP将一维数组转换为嵌套数组的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

如何在PHP中将'N'个元素一维数组转换为'N'级嵌套数组?

How do I convert an 'N' elements single dimensional array to 'N' level nested array in PHP ?

示例:

输入:

$input = array('Orange','Apple','Banana');

预期输出:

$output = array(
    'name' => 'Banana',
    'sub_category' => array(
         'name' => 'Apple',
         'sub_category' => array(
             'name' => 'Orange'
);

这是我的代码:

  $categories = array('Orange','Apple','Banana');
  $count = count($categories);
  for($i=0;$i<=$count;$i++){
    if(isset($categories[$i+1])){
      $parent = $categories[$i+1]; // parent      
        $categories[$i+1]=array(
          'name' => $categories[$i+1],
          'sub_category' => array('name' => $categories[$i])
        );
    }   
  }
  $categories = $categories[$count-1];
  var_dump($categories);

我的代码草率,并且我还得到以下错误输出:

My code is sloppy and I also get the following incorrect output:

$output = array(
    'name' => 'Banana',
    'sub_category' => array(
       'name' => array(  
         'name' => 'Apple',
         'sub_category' => array(
             'name' => 'Orange'
       );
);

此处提供的问题/解决方案似乎没有回答我的问题.

The problem/solution provided here does not seem to be answering my question.

推荐答案

您可以使用简单的递归技术:

You could use simple recursion technique:

function toNestedArray(array $input, array $result = [])
{
    $result = ['name' => array_pop($input)];
    if (count($input)) {
        $result['sub_category'] = toNestedArray($input, $result);
    }

    return $result;
}

这篇关于PHP将一维数组转换为嵌套数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆