PHP将一维数组转换为嵌套数组 [英] PHP Convert single dimensional array to nested array
本文介绍了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屋!
查看全文