Php 按级别排列分层数据
我有一个数据集或数组,看起来像Php 按级别排列分层数据,php,mysql,arrays,recursion,Php,Mysql,Arrays,Recursion,我有一个数据集或数组,看起来像 [ "foo", "bar", [ "gum", "ball", [ "fat", "rubber", ], "zoo", "topia", ], "ant",
[
"foo",
"bar",
[
"gum",
"ball",
[
"fat",
"rubber",
],
"zoo",
"topia",
],
"ant",
"elephant",
"grass",
[
"hopper",
],
]
我需要一个函数,根据它们的级别或深度对它们进行分组。比如:
[
"level 1" => ['foo','bar','ant','elephant','grass'],
"level 2" => ['gum','ball','zoo','topia','hopper'],
"level 3" => ['fat','rubber'],
]
编辑我澄清了源数据,因为它似乎引起了一些混乱给你:
SELECT LENGTH(value) - LENGTH(REPLACE(value, '-', '')) as level, GROUP_CONCAT(REPLACE(value, '-', '')) as groups
FROM test
GROUP BY level;
我不是SQL专家,您也不会展示任何关于数据库的信息,因此这里有一个递归PHP函数:
function get_levels($array, $level=1) {
$result = array();
foreach($array as $value) {
if(is_array($value)) {
$result += get_levels($value, $level+1);
} else {
$result[$level][] = $value;
}
}
return $result;
}
print_r(get_levels($array));
正是我需要的。谢谢我会投票给你,但是,你知道,名声很低