我有以下结果集

我需要创建一个这样的数组
array(11) {
["Science & engineering"]=>
array(3) {
["Physics"]=>
array(1) {
["Work & energy"]=>
array(0) {
}
}
["Chemistry"]=>
array(0) {
}
["Biology"]=>
array(0) {
}
}
["Computing"]=>
array(0) {
}
["Arts & humanities"]=>
array(0) {
}
["Math"]=>
array(0) {
}
["Economics & finance"]=>
array(0) {
}
["Business"]=>
array(0) {
}
["Personal development"]=>
array(0) {
}
["Lifestyle"]=>
array(0) {
}
["Health & fitness"]=>
array(0) {
}
["Photography"]=>
array(0) {
}
}如你所见,数组只有两层深。我需要创建一个数组,只要有更多的子数组并且没有重复,它就会无限下降。
编辑:我也欢迎任何其他有效的解决方案来解决这个问题。最终结果应该是拥有一个按层次顺序排列的数组中所有类别的列表。
发布于 2019-03-28 12:03:04
用于创建具有2个lvl的数组的脚本示例
你必须使用递归结构函数:
<?php
function buildArray(array $elements, $parentId = 0) {
$branch = array();
foreach ($elements as $element) {
if ($element['parent_id'] == $parentId) {
$children = buildArray($elements, $element['id']); //recursion
if ($children) {
$element['children'] = $children;
}
$branch[] = $element;
}
}
return $branch;
}
$result= buildArray($rows);https://stackoverflow.com/questions/55389135
复制相似问题