zoukankan      html  css  js  c++  java
  • php 两种递归方法

    直接上代码

     1 //1、tp5写法,一步一步入库查询
     2 function get_array($id=0){
     3     $result = Db::name('category')->where(['pid'=>$id])->select();
     4     $arr = array();
     5     if($result){//如果有子类
     6         foreach ($result as $val){
     7             $val['list'] = get_array($val['id']);
     8             $arr[] = $val; //组合数组
     9         }
    10     }
    11     return $arr;
    12 }
    13 $str = json_encode(get_array(0));
    14 echo $str;
    15 
    16 //2、先查库,然后再进行递归查询,不用频繁操作数据库了
    17 $result = Db::name('category')
    18     ->field('id,value,pid')
    19     ->select();
    20 dump($result);
    21 
    22 function getTree($data, $pid){
    23     $tree = [];
    24     foreach($data as $k => $v){
    25         if($v['pid'] == $pid){        //父亲找到儿子
    26             $v['son'] = getTree($data, $v['id']);//再看看是否还有孙子。。
    27             $tree[] = $v;
    28             //unset($data[$k]);
    29         }
    30     }
    31     return $tree;
    32 }
    33 $tree = getTree($result, 0);
    34 dump($tree);
    35 echo json_encode($tree);

    建议使用第二种

  • 相关阅读:
    js原型杂谈
    arguments.callee.caller
    $resource
    sql的四种匹配模式
    AMD规范
    module.ngdoc
    angularjs杂谈
    浏览器前缀
    css21规范学习
    <meta>标签
  • 原文地址:https://www.cnblogs.com/cyfblogs/p/12957314.html
Copyright © 2011-2022 走看看