您的位置:

php递归遍历显示,php的递归

本文目录一览:

PHP遍历输出文件夹内的所有文件用递归算法?

一般来说,类似这种遍历输出所有文件,大多采用递归算法,这样程序显得比较简洁,其实际执行效率来说,并不见得比其他方法更好。

以下是示例:

function file_list($path)

{

if ($handle = opendir($path))//打开路径成功

{

while (false !== ($file = readdir($handle)))//循环读取目录中的文件名并赋值给$file

{

if ($file != "." $file != "..")//排除当前路径和前一路径

{

if (is_dir($path."/".$file))

{

// echo $path.": ".$file."br";//去掉此行显示的是所有的非目录文件

file_list($path."/".$file);

}

else

{

echo $path.": ".$file."br";

}

}

}

}

}

PHP递归无限分类的 如何统计总条数 以及对显示的结果进行分页?比如设置为每页显示10个 。

每个节点都要记录子节点的数量c。每新增一个节点都要对各父和祖节点的子节点计数加1。这样根节点会有总数的记录。

这样递归遍历时也可以根据子节点数量c的来确定读取的数量限制。比如 读取条数计数10 就继续递归

在每个节点的表上 增加子节点的id集或计数,增加根节点到父节点路径,会方便这些操作。

php如何实现递归遍历文件目录

只需要一个递归函数:

function Folders($folder) {

if (!is_dir($folder)) return false;

foreach (scandir($folder) AS $f) {

if ($f == '.' or $f == '..') continue;

echo $f, 'hr/';

Folders($folder . '/' . $f);    // 递归调用

}

}

Folders('Test');

php 递归问题,想要将数据按照无限极分类的样式显示出来

首先 将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;

}

?

select name="" id=""

?php  foreach ($options as $row) { ?

option value="?php echo $row['id'] ?"?php echo str_pad("",$row['deep']*3, "-",STR_PAD_RIGHT); ??php echo $row['name']; ?/option

?php } ?

/select

以上代码已测试通过 效果图如下

PHP关于通过递归函数显示所有分类的问题

首先需要搞明白你的数据库结构,你的档案类别数据库表 dangan_class 是不是三字段:id、name、f_id,其中id为主键,f_id为自关联的外键,表示上一分类,0表示最上级分类,对不对?

树状枚举出所有类别的代码可以这样:

?php

function zilei($fid,$level){

$sql="select id,name from dangan_class where f_id=$fid";

$query=mysql_query($sql);

while(list($id,$name)=mysql_fetch_array($query)){

echo str_repeat("==",$level),$name,"a href='?del=$id'删除/abr\n";

zilei($id,$level+1);

}

mysql_free_result($query);

}

zilei(0,0);

?

为了结构简单,我上面只做了删除的代码,修改的部分你自行加上,你也可以先调试好了删除的代码再加。

代码里面的==是为了缩进,你可以换为全角的空白,或者其它符号。