php递归文件夹
你没有去除目录下的"."和“..”的情况,还有就是你is_dir里那个参数判断有问题,你参数路径不完整,然后就是你的$file没有全局。
"."是上一级目录,".."是当前目录,循环到这两个的时候就陷入死循环了,你有再大的空间也不够。
修改后的方法是:
functionGetAllFileByDir($fileDir)
{
global$num,$files;
$MyArry=scandir($fileDir);
for($j=0;$j<count($MyArry);$j++)
{
if($MyArry[$j]!="."&&$MyArry[$j]!=".."&&is_dir($fileDir."/".$MyArry[$j]))
{
GetAllFileByDir($fileDir."/".$MyArry[$j]);
}
elseif($MyArry[$j]!="."&&$MyArry[$j]!="..")
{
$files[$num]=$MyArry[$j];
$num++;
}
}
}
GetAllFileByDir("d:/test");
if(count($files)>0)
{
for($s=0;$s<count($files);$s++)
{
echo$files[$s]."<br/>";
}
}
Ⅱ php上传文件,创建递归目录的实例代码
复制代码
代码如下:
<?php
$uid=$_REQUEST['uid'];
$avatar
=
'D:/avic/discuz/uc_server/data/avatar/'.get_avatar($uid,
$size,
$type);
$dir=dirname($avatar);
//创建目录成功后移动临时文件
if(mkdirs($dir)){
if($_FILES["pic"]["error"]
>=
0){
if(move_uploaded_file($_FILES['pic']['tmp_name'],$avatar)){
$errorcode=1;
}else{
$errorcode=0;
$errormsg="文件移动失败";
}
}else{
$errorcode=0;
$errormsg=$_FILES['pic']['error'];
}
}
$back=array("errorcode"=>$errorcode,'errormsg'=>$errormsg);
echo
json_encode($back);
//返回图片要存储的路径
function
get_avatar($uid,
$size
=
'middle',
$type
=
'')
{
$size
=
in_array($size,
array('big',
'middle',
'small'))
?
$size
:
'middle';
$uid
=
abs(intval($uid));
$uid
=
sprintf("%09d",
$uid);
$dir1
=
substr($uid,
0,
3);
$dir2
=
substr($uid,
3,
2);
$dir3
=
substr($uid,
5,
2);
$typeadd
=
$type
==
'real'
?
'_real'
:
'';
return
$dir1.'/'.$dir2.'/'.$dir3.'/'.substr($uid,
-2).$typeadd."_avatar_$size.jpg";
}
//递归创建目录,若传的$dir不是绝对路径,则会和运行此方法的目录同级
function
mkdirs($dir){
if(!is_dir($dir)){
if(!mkdirs(dirname($dir))){
return
false;
}
if(!mkdir($dir,0777)){
return
false;
}
}
return
true;
}
?>
Ⅲ 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递归遍历文件夹,展现形式为数组的函数
这个不好说,有横向遍历和纵向遍历,看你的需要,横向遍历要用到栈的知识,纵向就用递归就行(把数组给一个函数,函数判断数组里面的值,是不是数组,是数组就继续给自己这个数组,不是的话就输出到目标数组)
Ⅳ php关于递归创建练级目录,为什么少输出一个目录
if(!file_exists(dirname($path))){//判断上一级目录是否存在
//mkdir($path,0777,true);
//echo 'yes';
check(dirname($path));//当返回到./当前目录时存在,那么依次进行下一步创建文件夹操作
mkdir(dirname($path),0777);
}
改为
if(!file_exists(dirname($path))){//判断上一级目录是否存在
//mkdir($path,0777,true);
//echo 'yes';
check(dirname($path));//当返回到./当前目录时存在,那么依次进行下一步创建文件夹操作
}
mkdir(dirname($path),0777);
Ⅵ php中递归方法删除非空目录和文件,虽然网上有很多代码,但大多数都有错误,我也不会改
啥意思?就是删除 目录和文件是吧?
//删除文件夹及其文件夹下所有文件
function deldir($dir) {
//先删除目录下的文件:
$dh=opendir($dir);
while ($file=readdir($dh)) {
if($file!="." && $file!="..") {
$fullpath=$dir."/".$file;
if(!is_dir($fullpath)) {
unlink($fullpath);
} else {
deldir($fullpath);
}
}
}
closedir($dh);
//删除当前文件夹:
if(rmdir($dir)) {
echo '删除成功';
} else {
echo '删除失败';;
}
}
Ⅶ php获得文件夹下所有文件的递归算法的简单实例
如下所示:
function
my_scandir($dir)
{
$files=array();
if(is_dir($dir))
{
if($handle=opendir($dir))
{
while(($file=readdir($handle))!==false)
{
if($file!="."
&&
$file!="..")
{
if(is_dir($dir."/".$file))
{
$files[$file]=my_scandir($dir."/".$file);
}
else
{
$files[]=$dir."/".$file;
}
}
}
closedir($handle);
return
$files;
}
}
}
以上就是小编为大家带来的php获得文件夹下所有文件的递归算法的简单实例全部内容了,希望大家多多支持脚本之家~
Ⅷ 关于php递归函数创建级联目录的困惑
mkdir1刚进去就是判断$dir存不存在,a/b/c/d/e说白了就是判断有没有e文件夹
如果没有 继续dirname($dir) 判断a/b/c/d路径的d文件夹有没有
如果没有 继续dirname($dir) 判断a/b/c路径的c文件夹有没有
依此类推直到
dirname($dir) 判断a路径的时候 不存在执行当前递归层的mkdir($dir) 创建a
存在则return,然后执行当前递归层上一级的mkdir($dir) 创建a/b
之后继续上一级的mkdir($dir) 创建a/b/c
直到创建完a/b/c/d/e 递归结束
Ⅸ php递归删除目录与文件的方法
本文实例讲述了php递归删除目录与文件的方法。分享给大家供大家参考。具体实现方法如下:
<?php
function
deldir($path){
$dh
=
opendir($path);
var_mp(readdir($dh));
while(($d
=
readdir($dh))
!==
false){
if($d
==
'.'
||
$d
==
'..'){//如果为.或..
continue;
}
$tmp
=
$path.'/'.$d;
if(!is_dir($tmp)){//如果为文件
unlink($tmp);
}else{//如果为目录
deldir($tmp);
}
}
closedir($dh);
rmdir($path);
}
$path
=
"./e";
deldir($path);
?>
希望本文所述对大家的PHP程序设计有所帮助。
Ⅹ php怎么实现递归ftp服务器上的文件内容
FTP有专门的工具,直接绑定帐号就可以上传内容的,不用PHP写。如果真要PHP写那就只能循环读取与上传文件了。