无限极分类输出的方法

2018-06-22 05:37:46来源:未知 阅读 ()

新老客户大回馈,云服务器低至5折

数据:

$data = array(
  array(
    'id' => 1,
    'parent_id' => 0,
    'name' => 'first'
  ),
  array(
    'id' => 2,
    'parent_id' => 1,
    'name' => 'second'
  ),
  array(
    'id' => 3,
    'parent_id' => 2,
    'name' => 'third'
  ),
  array(
    'id' => 4,
    'parent_id' => 3,
    'name' => 'forth'
  ),
);

调用:$res = $this->make_tree1($data);

封装方法

方法一:foreach循环

  

//方法一:foreach循环实现无限极
public function make_tree($list,$pk='id',$pid='parent_id',$child='children',$root=0)
{
  $tree = array();
  $temp = array();
  foreach ($list as $data)
  {
    $temp[$data[$pk]] = $data;
  }
  foreach ($temp as $key =>$val)
  {
    if($val[$pid]==$root)
    { //代表跟节点
      $tree[]=& $temp[$key];
    }
    else
    {
    //找到其父类
    $temp[$val[$pid]][$child][]=& $temp[$key];
    }
  }
  return $tree;
}

 

//方法二:递归方法实现无限极
public function make_tree1($list,$pk='id',$pid='parent_id',$child='children',$root=0)
{
  $tree = array();
  foreach($list as $key=> $val)
  {
    if($val[$pid]==$root)
    {
      //获取当前$pid所有子类
      unset($list[$key]);
      if(!empty($list))
      {
        $child = $this->make_tree1($list,$pk,$pid,$child,$val[$pk]);
        if(!empty($child))
        {
          $val['_child'] = $child;
        }
      }
      $tree[]=$val;
    }
  }
  return $tree;
}

标签:

版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有

上一篇:php+mysql 解决emoji问题

下一篇:Session 的原理及最佳实践