//假设你有一个符合递归要求的数据表 //这里取出全部数据 这里假设结果为:$countryList $countryList = $city->getChildrenList(); $listdata = array(); foreach($countryList as $coun){ $listdata[$coun['id']] = $coun; //这里以`$coun['id']`为参数 取出下一级数据
假设结果为:$provinceList foreach($provinceList as $province){ $listdata[$province['id']] = $province; $listdata[$province['id']]['country'] = $coun['name']。
//这里以`$province['id']`为参数 取得最后一级数据 假设结果为:$area foreach($area as $v){ $listdata[$v['id']] = $v; $listdata[$v['id']]['province'] = $province['name']; $listdata[$v['id']]['country'] = $coun['name']; } } } //三维数组 递归完成。
首先 将json 解码成数组, 用json_decode 函数 注意 一定要加上第二个参数 否则他会返回一个对象。接下来就是地递归了。这是一个最简单的递归只要逐个遍历即可。
下面是完整的代码: $data= json_decode($str,true); $options = getChildren($data); function getChildren($parent,$deep=0) { foreach($parent as $row) { $data[] = array('id'=>$row['id'], 'name'=>$row['name'],'pid'=>$row['parentid'],'deep'=>$deep); if ($row['childs']) { $data = array_merge($data, getChildren($row['childs'], $deep+1)); } } return $data; } ?>