php递归遍历删除文件的方法
文章主要介绍了php递归遍历删除文件的方法,涉及php遍历文件操作的相关技巧,非常具有实用价值,需要的朋友可以参考下.
本文实例讲述了php递归遍历删除文件的方法。分享给大家供大家参考。具体如下:
这个函数稍加修改就可以变成一个递归文件拷贝函数
?
1
2
3
4
5
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
<?php
function mover($src,$dst) {
$handle=opendir($src);
/pic/p>
if (!is_dir($dst)) mkdir($dst,0755);
/pic/p>
while ($file = readdir($handle)) {
if (($file!=".") and ($file!="..")) {
/pic/p>
$srcm=$src."/".$file;
$dstm=$dst."/".$file;
if (is_dir($srcm)) {
/pic/p>
mover($srcm,$dstm);
/pic/p>
} else {
copy($srcm,$dstm);
unlink($srcm);
/pic/p>
} /pic/p>
}
}
closedir($handle);
rmdir($src);
}
?>
希望本文所述对大家的php程序设计有所帮助。
【拓展阅读】
算法原理
如果用P表示n个元素的全排列,而Pi表示n个元素中不包含元素i的全排列,(i)Pi表示在排列Pi前面加上前缀i的排列,那么n个元素的全排列可递归定义为:
① 如果n=1,则排列P只有一个元素i;
② 如果n>1,则全排列P由排列(i)Pi构成;
根据定义,可以看出如果已经生成(k-1)个元素的排列Pi,那么k个元素的排列可以在每个Pi前面加上元素i而生成。
代码实现
复制代码 代码如下:
function rank($base, $temp=null)
{
$len = strlen($base);
if($len <= 1)
{
echo $temp.$base.'<br/>';
}
else
{
for($i=0; $i< $len; ++$i)
{
rank(substr($base, 0, $i).substr($base, $i+1, $len-$i-1), $temp.$base[$i]);
}
}
}
rank('123');
不过,经多次测试运行结果,发现存在一个问题:若是存在相同的元素,则全排列有重复。
例如'122'的全排列只有三种情况:'122'、'212'、'221';上面方法却有重复。
略修改,加个判断重复的标志,解决了问题(代码如下):
复制代码 代码如下:
function fsRank($base, $temp=null)
{
static $ret = array();
$len = strlen($base);
if($len <= 1)
{
/pic/>';
$ret[] = $temp.$base;
}
else
{
for($i=0; $i< $len; ++$i)
{
$had_flag = false;
for($j=0; $j<$i; ++$j)
{
if($base[$i] == $base[$j])
{
$had_flag = true;
break;
}
}
if($had_flag)
{
continue;
}
fsRank(substr($base, 0, $i).substr($base, $i+1, $len-$i-1), $temp.$base[$i]);
}
}
return $ret;
}
print '<pre>';
print_r(fsRank('122'));
print '</pre>';
【php递归遍历删除文件的方法】相关文章:
php递归遍历多维数组的方法09-13
PHP遍历目录文件常用方法03-06
php递归创建和删除文件夹的代码01-20
用php自定义函数之递归删除文件及目录12-07
PHP使用递归算法无限遍历数组示例09-03
用PHP遍历目录下的全部文件03-17
php遍历数组的方法分享07-08
php遍历替换目录下文件指定内容10-05
PHP读取文件的正确方法11-28