if (!function_exists('listToTree')) {
/**
* 把返回的数据集转换成Tree
* @param $list
* @param $pk
* @param $pid
* @param $child
* @param $root
* @return array
*/
function listToTree($list, $pk = 'id', $pid = 'parent_id', $child = 'children', $root = 0) {
// 创建Tree
$tree = [];
if (is_array($list)) {
// 创建基于主键的数组引用
$refer = [];
foreach ($list as $key => $data) {
$refer[$data[$pk]] =& $list[$key];
}
foreach ($list as $key => $data) {
// 判断是否存在parent
$parentId = $data[$pid];
if ($root == $parentId) {
$tree[] =& $list[$key];
} else {
if (isset($refer[$parentId])) {
$parent =& $refer[$parentId];
$parent[$child][] =& $list[$key];
}
}
}
}
return $tree;
}
}
if (!function_exists('treeToList')) {
/**
* 把Tree数据集转换成数组
* @param $datas
* @param $ckey
* @param $result
* @return array|mixed
*/
function treeToList($datas, $ckey = 'children', &$result = []) {
if (!is_array($datas)) {
return $datas;
} else {
foreach ($datas as $data) {
if (!isset($data[$ckey])) {
$result[] = $data;
} else {
$chileds = $data[$ckey];
unset($data[$ckey]);
$result[] = $data;
treeToList($chileds, $ckey, $result);
}
}
}
return $result;
}
}
PHP 数组转换成树、树转换成数组方法
最新推荐文章于 2023-01-12 14:32:38 发布
本文介绍了两个PHP辅助函数,`listToTree`和`treeToList`,用于将数据列表转换为树形结构,以及将树形结构转换回列表。这些函数在处理层级关系数据时非常有用,例如在构建菜单、组织结构或分类系统时。
摘要由CSDN通过智能技术生成