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 49 50 51 52 53 |
<?php /** * @Author: Marte * @Date: 2017-04-25 21:02:44 * @Last Modified by: Marte * @Last Modified time: 2017-04-25 21:18:23 */ $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(); //一直往上找,直到id为0 while ($id !==0) { foreach ($arr as $v) { //如果数组中的id的值等于,输入的id值,那么就是要找的数据 if ($v['id']==$id) { //把找到的数据写入数组里 $tree[]=$v; //把这条数据的父id重新赋给$id,作为新的id继续查找上一级 $id=$v['parent']; break; } } } //以数组形式,返回最终结果 return $tree; } echo '<pre>'; print_r(familytree($area,9)); echo '</pre>'; ?> |