概述PHP数组转树结构以及树结构转数组
推荐:《PHP视频教程》
public function index() { $data = [ [ 'ID'=>1, 'parent_ID' => 0, 'name' => '第一个' ], [ 'ID'=>2, 'parent_ID' => 0, 'name' => '第二个' ], [ 'ID'=>3, 'parent_ID' => 1, 'name' => '第三个' ], ]; $r = $this->List_to_tree($data); dump($r); }
#数组转树结构#
function List_to_tree($List, $root = 0, $pk = 'ID', $pID = 'parent_ID', $child = 'children'){ // 创建Tree $tree = array(); if (is_array($List)) { // 创建基于主键的数组引用 $refer = array(); foreach ($List as $key => $data) { $refer[$data[$pk]] = &$List[$key]; } foreach ($List as $key => $data) { // 判断是否存在parent $parentID = 0; if (isset($data[$pID])) { $parentID = $data[$pID]; } if ((string)$root == $parentID) { $tree[] = &$List[$key]; } else { if (isset($refer[$parentID])) { $parent = &$refer[$parentID]; $parent[$child][] = &$List[$key]; } } } } return $tree;}
#树结构转数组#
function tree_to_List($tree = [], $children = 'children'){ if (empty($tree) || !is_array($tree)) { return $tree; } $arrRes = []; foreach ($tree as $k => $v) { $arrTmp = $v; unset($arrTmp[$children]); $arrRes[] = $arrTmp; if (!empty($v[$children])) { $arrTmp = tree_to_List($v[$children]); $arrRes = array_merge($arrRes, $arrTmp); } } return $arrRes;}
总结
以上是内存溢出为你收集整理的PHP数组转树结构以及树结构转数组全部内容,希望文章能够帮你解决PHP数组转树结构以及树结构转数组所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
© 版权声明
THE END
请登录后查看评论内容