前言
在做php中树形结构转数组的功能中有时候需要把树结构直接拉平按照树结构的顺序按照由上到下排列,这时候就需要另外一种处理方法了。
解决办法
//树结构数据转数组(拉平树结构,保留上下级排序)
function treeToList($treeData, $pid = 0)
{
$array = array();
foreach ($treeData as $val) {
$inData = $val;
$inData['p_key'] = $pid;
$array[] = $inData;
if (isset($val['children'])) {
$children = treeToList($val['children'], $val['key']);
if ($children) {
$array = array_merge($array, $children);
}
}
}
return $array;
}
直接拉平树状结构,保留上下排序。
$tree = [
[
"key" => 1,
"p_key" => 0,
"title" => "湖北省",
"children" => [
[
"key" => 2,
"p_key" => 1,
"title" => "武汉市",
"children" => [
[
"key" => 3,
"p_key" => 2,
"title" => "武昌区",
"children" => [
[
"key" => 4,
"p_key" => 3,
"title" => "蛇山西山坡特1号",
"children" => [
[
"key" => 5,
"p_key" => 4,
"title" => "黄鹤楼",
],
],
],
],
],
],
],
],
],
];
$data = [
[
"key" => 1,
"p_key" => 0,
"title" => "湖北省",
],
[
"key" => 2,
"p_key" => 1,
"title" => "武汉市",
],
[
"key" => 3,
"p_key" => 2,
"title" => "武昌区",
],
[
"key" => 4,
"p_key" => 3,
"title" => "蛇山西山坡特1号",
],
[
"key" => 5,
"p_key" => 4,
"title" => "黄鹤楼",
],
];