php递归方法
<?php
header("Content-type:text/html;charset=utf-8");
$city=array(
array('id'=>1,'name'=>'北京',"pid"=>0),
array('id'=>2,'name'=>'广东',"pid"=>0),
array('id'=>3,'name'=>'海淀区',"pid"=>1),
array('id'=>4,'name'=>'昌平区',"pid"=>1),
array('id'=>5,'name'=>'上地',"pid"=>3),
array('id'=>6,'name'=>'西二旗',"pid"=>3),
array('id'=>7,'name'=>'回龙观',"pid"=>4),
array('id'=>8,'name'=>'霍营',"pid"=>4),
array('id'=>9,'name'=>'深圳',"pid"=>2),
array('id'=>10,'name'=>'广州',"pid"=>2),
array('id'=>11,'name'=>'福田',"pid"=>9),
array('id'=>12,'name'=>'南山',"pid"=>9),
);
/*
$res=array(
array('id'=1,'name'=>'北京',"pid"=>0),
array('id'=3,'name'=>'海淀区',"pid"=>1),
array('id'=5,'name'=>'上地',"pid"=>3),
array('id'=6,'name'=>'西二旗',"pid"=>3),
array('id'=4,'name'=>'昌平区',"pid"=>1),
array('id'=7,'name'=>'回龙观',"pid"=>4),
array('id'=8,'name'=>'霍营',"pid"=>4),
array('id'=2,'name'=>'广东',"pid"=>0),
array('id'=9,'name'=>'深圳',"pid"=>2),
array('id'=11,'name'=>'福田',"pid"=>9),
array('id'=12,'name'=>'南山',"pid"=>9),
array('id'=10,'name'=>'广州',"pid"=>2),
);
*/
function tree($arr,$pid=0){
static $res=array();
foreach($arr as $v){
if($v['pid']==$pid){
//说明找到,先保存,继续递归查找
$res[]=$v;
tree($arr,$v['id']);
}
}
return $res;
}
echo "<pre>";
var_dump($city);
echo "<hr>";
$result=tree($city);
var_dump($result);
*********************************************************************************************************
在模型类中的使用情形:
/**
* @param array $arr [要排序的数组]
* @param integer $pid [父id]
* @return array [排序好的数组]
*/
public function tree($arr,$pid=0,$level=0){
static $res=array();
foreach($arr as $v){
if($v['pid']==$pid){
//说明找到,先保存,然后在递归查找
$v['level']=$level;
$res[]=$v;
$this->tree($arr,$v['cat_id'],$level+1);
}
}
return $res;
}
php递归方法的更多相关文章
- 使用递归方法遍历TreeView的节点如配置则勾选
自己在网上找了一段时间都没有找到取自数据库的值与TreeView中的节点值进行对比如匹配则勾选中CheckBox的资料,后面自己写了一个递归方法实现,现在记录起来以备需要时使用.在没写这递归方法前如果 ...
- php用压栈的方式,循环遍历无限级别的数组(非递归方法)
php用压栈的方式,循环遍历无限级别的数组(非递归方法) 好久不写非递归遍历无限级分类...瞎猫碰到死老鼠,发刚才写的1段代码,压栈的方式遍历php无限分类的数组... php压栈的方式遍历无限级别数 ...
- Java-->用递归方法复制目录、子目录以及文件(文件用到IO流)
package com.dragon.java.newcopyfile; import java.io.File; import java.io.FileInputStream; import jav ...
- java递归方法
一个方法体内调用他自身,称为方法递归. 方法递归是一种隐式的循环,Tahiti重复执行某段代码,但这种重复执行无需循环控制 /* Author:oliver QIN DATE:2015-12-19 D ...
- Yii中用递归方法实现无限级分类
用递归方法实现多级分类,适合分级不太多的分类,如三到四级. 数据库结构: Model中(Category.php) /** * 获取全部分类信息 */ public function getAllca ...
- java 中递归的实现 以及利用递归方法实现汉诺塔
今天说下java语言中比较常见的一种方法,递归方法. 递归的定义 简单来说递归的方法就是"自己调用自己",通过递归方法往往可以将一个大问题简单化,最终压缩到一个易于处理的程度.对于 ...
- Java实现二叉树的前序、中序、后序遍历(递归方法)
在数据结构中,二叉树是树中我们见得最多的,二叉查找树可以加速我们查找的效率,那么输出一个二叉树也变得尤为重要了. 二叉树的遍历方法分为三种,分别为前序遍历.中序遍历.后序遍历.下图即为一个二叉 ...
- Java递归方法遍历二叉树的代码
将内容过程中经常用的内容做个记录,如下内容内容是关于Java递归方法遍历二叉树的内容. package com.wzs; public class TestBinaryTree { public st ...
- Python3练习题 021:递归方法求阶乘
利用递归方法求5!. 方法一 f = 1 for i in range(1,6): f = f * i print(f) 方法二 import functools print(functo ...
- 用递归方法解决汉诺塔问题(Recursion Hanoi Tower Python)
汉诺塔问题源于印度的一个古老传说:梵天创造世界的时候做了三根金刚石柱子,在一根柱子上从下往上按照大小顺序摞着64片黄金圆盘.梵天命令婆罗门把圆盘按大小顺序重新摆放在另一根柱子上,并且规定小圆盘上不能放 ...
随机推荐
- Codeforces Round #483 (Div. 2)题解
A. Game time limit per test 2 seconds memory limit per test 256 megabytes input standard input outpu ...
- java利用poi解析excel文件
首先需要引入以下jar包 如果使用maven,需要添加两个依赖 <dependencies> <dependency> <groupId>org.apache.po ...
- cf213E 线段树维护hash
链接 https://codeforces.com/contest/213/problem/E 题目大意 给出两个排列a.b,长度分别为n.m,你需要计算有多少个x,使 得\(a_1 + x; a_2 ...
- P2761 软件补丁问题
P2761 软件补丁问题 思路 貌似不用网络流,直接状态压缩 用spfa跑最短路,直接判断是否能过 位运算太渣了,WA了好几发 代码 #include <bits/stdc++.h> us ...
- (转)开源项目t-io
石墨文档:https://shimo.im/docs/tHwJJcvKl2AIiCZD/ (二期)18.开源t-io项目解读 [课程18]BIO....AIO.xmind0.4MB [课程18]t-i ...
- BFS广度优先 vs DFS深度优先 for Binary Tree
https://www.geeksforgeeks.org/bfs-vs-dfs-binary-tree/ What are BFS and DFS for Binary Tree? A Tree i ...
- How to resize slide dimensions without resizing any objects on the slide?
IF you are competent to unzip the pptx file and modify the XML it can be done, the slide size will c ...
- Python实现机器学习算法:AdaBoost算法
Python程序 ''' 数据集:Mnist 训练集数量:60000(实际使用:10000) 测试集数量:10000(实际使用:1000) 层数:40 ------------------------ ...
- Google advertiser api开发概述——批量处理
批处理 大多数服务都提供同步 API,要求您发出请求然后等待响应,但 BatchJobService 允许您对多项服务执行批量操作,而无需等待操作完成. 与各服务的特定 mutate 操作不同,Bat ...
- HBase底层存储原理
HBase底层存储原理——我靠,和cassandra本质上没有区别啊!都是kv 列存储,只是一个是p2p另一个是集中式而已! 首先HBase不同于一般的关系数据库, 它是一个适合于非结构化数据存储的数 ...