1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 |
<?php /** * @Author: Marte * @Date: 2017-04-25 20:24:14 * @Last Modified by: Marte * @Last Modified time: 2017-04-25 20:55:38 */ $area=array( array('id'=>1,'name'=>'广东省','parent'=>0,'level'=>1), array('id'=>2,'name'=>'广州市','parent'=>1,'level'=>2), array('id'=>3,'name'=>'天河区','parent'=>2,'level'=>3), array('id'=>4,'name'=>'东莞市','parent'=>1,'level'=>2), array('id'=>5,'name'=>'长安镇','parent'=>4,'level'=>3), array('id'=>6,'name'=>'石龙镇','parent'=>4,'level'=>3), array('id'=>7,'name'=>'车陂街道','parent'=>3,'level'=>4), array('id'=>8,'name'=>'广西省','parent'=>0,'level'=>1), array('id'=>9,'name'=>'南宁市','parent'=>8,'level'=>2), ); function familytree($arr,$id){ //用于存放结果 $tree=array(); foreach ($arr as $v) { //如果数组中id的值,等于输入的id值,那么,这条数据就是要找的 if ($v['id']==$id) { //如果当前的parent不为0,那么说明还存在上一级,递归调用,把上一级找出来,直到parent=0 if ($v['parent']>0) { //递归调用函数,把结果存入数组中 $tree=array_merge($tree,familytree($arr,$v['parent'])); } //把找到的值写入到数据库 $tree[]=$v; } } //把最后的结果返回 return $tree; } echo '<pre>'; print_r(familytree($area,9)); echo '</pre>'; ?> |