切换风格

后盾网PHP论坛-php培训论坛-php教程-PHP视频教程-北京PHP培训

  • 咨询热线: 400-682-3231
  • QQ咨询: 联系在线客服老师 联系在线客服老师 联系在线客服老师

QQ登录

只需一步,快速开始

返回列表 发新帖

[PHP&Mysql] 递归问题,如何计算子孙树下的男女?

[复制链接]
     
  • TA的每日心情
    开心
    7 天前
  • 签到天数: 19 天

    [LV.4]偶尔看看III

    1

    主题

    24

    帖子

    865

    积分

    中学生

    Rank: 4

    积分
    865
    活动推广币
    0 个
    后盾币
    865 个
    注册时间
    2016-3-14
    在线时间
    17 小时
    帖子
    24
    发表于 7 天前 |显示全部楼层 | 阅读模式
    怎么样通过递归,计算家谱中的男女?

    想达到效果如下:

    家谱--男5--女4
      └--张三 --男2--女1
        └--王五 --男1--女1
          └--三六 --男1--女0
            └--四七 --男0--女0
      └--李四 --男1--女3
        └--五八 --男1--女2
          └--晶晶 --男0--女1
            └--丽丽 --男0--女0
          └--小二 --男0--女0


    代码如下:请问各位老师同学,我要怎么改才可以实现如上的计算?
    1. <?php
    2. function getMenuTree($arrCat, $parent_id = 0, $level = 0)
    3. {
    4.     static  $arrTree = array(); //使用static代替global
    5.     if( empty($arrCat)) return FALSE;
    6.     $level++;
    7.     foreach($arrCat as $key => $value)
    8.     {
    9.         if($value['parent_id' ] == $parent_id)
    10.         {
    11.             $value[ 'level'] = $level;
    12.             $arrTree[] = $value;
    13.             unset($arrCat[$key]); //注销当前节点数据,减少已无用的遍历
    14.             getMenuTree($arrCat, $value[ 'id'], $level);
    15.         }
    16.     }
    17.    
    18.     return $arrTree;
    19. }


    20. /**
    21. * 测试数据
    22. */
    23. $arrCate = array(  //待排序数组
    24.   array( 'id'=>1, 'name' =>'张三', 'parent_id'=>0, 'sex'=>'男'),
    25.   array( 'id'=>2, 'name' =>'李四', 'parent_id'=>0, 'sex'=>'男'),
    26.   array( 'id'=>3, 'name' =>'王五', 'parent_id'=>1, 'sex'=>'男'),
    27.   array( 'id'=>4, 'name' =>'三六', 'parent_id'=>3, 'sex'=>'女'),
    28.   array( 'id'=>5, 'name' =>'四七', 'parent_id'=>4, 'sex'=>'男'),
    29.   array( 'id'=>6, 'name' =>'五八', 'parent_id'=>2, 'sex'=>'女'),
    30.   array( 'id'=>7, 'name' =>'晶晶', 'parent_id'=>6, 'sex'=>'男'),
    31.   array( 'id'=>8, 'name' =>'小二', 'parent_id'=>6, 'sex'=>'女'),
    32.   array( 'id'=>9, 'name' =>'丽丽', 'parent_id'=>7, 'sex'=>'女'),
    33. );

    34. header('Content-type:text/html; charset=utf-8'); //设置utf-8编码
    35. $list = getMenuTree($arrCate, 0, 0);
    36. echo '家谱--男5,女4<br />';
    37. foreach($list as $v) {
    38.     echo str_repeat('  ',$v['level']),'└--',$v['name'],' ---男-----女';
    39.                 echo '<br />';

    40. }
    复制代码


    发表回复

    您需要登录后才可以回帖 登录 | 注册

    本版积分规则

    快速回复 返回顶部 返回列表