当前位置:首页 » 编程语言 » php类递归

php类递归

发布时间: 2024-05-10 22:33:55

1. php递归获取目录内文件封装类分享

php递归获取目录内文件封装类分享,可以递归子目录
代码如下:

代码如下:
function
readFileFromDir($dir)
{

if
(!is_dir($dir))
{

return
false;

}

//打开目录

$handle
=
opendir($dir);

while
(($file
=
readdir($handle))
!==
false)
{

//排除掉当前目录和上一个目录

if
($file
==
"."
||
$file
==
"..")
{

continue;

}

$file
=
$dir
.
DIRECTORY_SEPARATOR
.
$file;

//如果是文件就打印出来,否则递归调用

if
(is_file($file))
{

print
$file
.
'<br
/>';

}
elseif
(is_dir($file))
{

readFileFromDir($file);

}

}
}

调用方式:

代码如下:
$dir
=
'/home/www/test';
readFileFromDir($dir);

查看php手册的话,还有一个方法scandir也可以使用,不过这个方法会一次性获取单级目录下的所有文件,存放到数组里,如果目录里的文件比较多的话,会卡。

2. PHP怎么递归

下面我举一个其他的例子,虽然不是族谱,但是原理都是一样的。

在一些复杂的系统中,要求对信息栏目进行无限级的分类,以增强系统的灵活性。那么PHP是如何实现无限级分类的呢?我们在本文中使用递归算法并结合mysql数据表实现无限级分类。
递归,简单的说就是一段程序代码的重复调用,当把代码写到一个自定义函数中,将参数等变量保存,函数中重复调用函数,直到达到某个条件才跳出,返回相应的数据。
Mysql
首先我们准备一张数据表class,记录商品分类信息。表中有三个字段,id:分类编号,主键自增长;title:分类名称;pid:所属上级分类id。
class表结构:

CREATE TABLE IF NOT EXISTS `class` (
`id` mediumint(6) NOT NULL AUTO_INCREMENT,
`title` varchar(30) NOT NULL,
`pid` mediumint(6) NOT NULL DEFAULT '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

插入数据后,如图:

如果要输出json格式的数据,则可使用:

echo json_encode($list);

3. php递归无限极分类怎么弄

给个函数你,调用get_category()就是一个数组格式的结果
function get_category($parent_id=0){
$arr=array();
$sql = "select * from category where parent_id=$parent_id";//查询子级数据
$result = array(a_object,b_object,,,)=sql_query($sql);//查询结果一个数组或列表格式,自己完善。
if($result){
foreach($result as $re){//循环数组
if(get_category($re.id))//如果子级不为空
$re['child'] = get_category($re.id);
$arr[] = $re;
}
return $arr;
}

4. php递归的方法求和1+2+3+...+n

<?php
function add($n)
{
$result = 0;
for($i=1;$i<$n+1;$i++)
{
$result += $i;
}
return $result; 返回计算结果
}
echo add(5); //调用上面的函数
?>

5. 如何理解php中的递归函数 (详细讲解)

递归其实就是“一个函数的自调用”
在这个“自调用”的过程中,必须要有一个变化的“参数”,当这个“参数”达到你的期望值的时候,终止该“自调用”过程

拿楼主的程序来说

demo($n)内部又有调用demo($n-1),构成了“自调用”
且,$n又有一个“期望值”,即是$n>1,不满足此条件时,该自调用终止

即是说,最后一个执行的demo是demo($n9-1),其中$n9=2,然后返回为1(因为执行了return 1)
则$n9*demo($n9-1)即等于 2*demo(2-1),又等于2*1=2;
则$n8*demo($n8-1)即等于 3*demo(3-1),又等于3*2=6;
则$n7*demo($n7-1)即等于 4*demo(4-1),又等于4*6=24;
……
依次类推

这样想:
demo(1)是等于1,这个没有疑问吧?
然后demo(2)等于2*demo(1)=2*1=2
然后demo(3)等于3*demo(2)=3*2=6
……
一直到demo(10)

6. php中用递归函数计算出16的4次方

functionfunc($x,$n)
{
if搏枯握($n<=0)
败碰return1;
基庆return$x*func($x,$n-1);
}
echofunc(16,4);

7. php写函数 根据子类(id)递归查找顶级父类(id) 返回父类名字 (表结构:id name pid)

你这种表结构叫邻接缓租表,查询或皮的方式通过自连接。如

SELECTt1.nameASlev1,t2.nameaslev2,t3.nameaslev3,t4.nameaslev4

FROMTbnameASt1

LEFTJOINTbnameASt2ONt2.pid=t1.id

LEFTJOINTbnameASt3ONt3.pid=t2.id

LEFTJOINTbnameASt4ONt4.pid=t3.id

WHEREt1.name='XXXX'

这种方法的主要局限是你需要为每层数据添加一个自连接,随着层次的增加,自连接

变得越来越复杂,检索的性能自然而然的也就下降了。当然这种结构在查询前必须知道该节点所处的层级,否则无法确定自连接的深度。


邻接表模型衫哪差的局限性很大,用纯SQL实现有一定的难度。不妨考虑其他模型,比如嵌套模型。


嵌套模型的基本结构是树型结构,SQL检索比邻接表要方便很多。



关于嵌套模型,PHPChina的第一期电子杂志PHPer也有过深入探讨,请参考!

热点内容
arm编译添加驱动 发布:2024-05-21 02:02:28 浏览:475
安卓设置页面是怎么 发布:2024-05-21 01:32:51 浏览:520
学生成绩管理系统数据库设计 发布:2024-05-21 01:14:41 浏览:42
我的世界什么指令直接出现服务器 发布:2024-05-21 01:10:00 浏览:397
星等算法 发布:2024-05-21 00:53:06 浏览:509
李兴华的java视频 发布:2024-05-21 00:49:55 浏览:605
数据库4种索引类型 发布:2024-05-21 00:47:29 浏览:241
给服务器添加另一个ip 发布:2024-05-21 00:40:37 浏览:821
搭建ftp服务器出现微软蓝屏 发布:2024-05-21 00:35:18 浏览:369
ftp怎么加照片 发布:2024-05-21 00:14:37 浏览:623