微信号:phpgod

介绍:本公众号对PHP开发技术进行全面透析,所含内容适合各个阶段的PHP developer阅读和收藏,既然关注了就一定会有收获.

一段生成无限级别分类的代码思考

2018-07-12 21:51 Kemin猿哥

Talk is cheap,show me the code.

笔者也不爽约,先丢上代码:

  1. <?php

  2. $areas = array(

  3.  1 => array('id' => 1, 'pid' => 0, 'name' => '江西省'),

  4.  2 => array('id' => 2, 'pid' => 0, 'name' => '黑龙江省'),

  5.  3 => array('id' => 3, 'pid' => 1, 'name' => '南昌市'),

  6.  4 => array('id' => 4, 'pid' => 2, 'name' => '哈尔滨市'),

  7.  5 => array('id' => 5, 'pid' => 2, 'name' => '鸡西市'),

  8.  6 => array('id' => 6, 'pid' => 4, 'name' => '香坊区'),

  9.  7 => array('id' => 7, 'pid' => 4, 'name' => '南岗区'),

  10.  8 => array('id' => 8, 'pid' => 6, 'name' => '和兴路'),

  11.  9 => array('id' => 9, 'pid' => 7, 'name' => '西大直街'),

  12.  10 => array('id' => 10, 'pid' => 8, 'name' => '东北林业大学'),

  13.  11 => array('id' => 11, 'pid' => 9, 'name' => '哈尔滨工业大学'),

  14.  12 => array('id' => 12, 'pid' => 8, 'name' => '哈尔滨师范大学'),

  15.  13 => array('id' => 13, 'pid' => 1, 'name' => '赣州市'),

  16.  14 => array('id' => 14, 'pid' => 13, 'name' => '赣县'),

  17.  15 => array('id' => 15, 'pid' => 13, 'name' => '于都县'),

  18.  16 => array('id' => 16, 'pid' => 14, 'name' => '茅店镇'),

  19.  17 => array('id' => 17, 'pid' => 14, 'name' => '大田乡'),

  20.  18 => array('id' => 18, 'pid' => 16, 'name' => '义源村'),

  21.  19 => array('id' => 19, 'pid' => 16, 'name' => '上坝村'),

  22. );

  23. function makeTree($areas)

  24. {

  25.  $areaTree = [];

  26.  foreach ($areas as $id=>$area){

  27.  if(isset($areas[$area["pid"]])){

  28.  $areas[$area["pid"]]["children"][] = &$areas[$id];

  29.  } else {

  30.  $areaTree[] = &$areas[$area["id"]];

  31.  }

  32.  }

  33.  return $areaTree;

  34. }

  35. echo json_encode(makeTree