php语言

php递归遍历删除文件的方法

时间:2024-10-25 07:30:57 php语言 我要投稿
  • 相关推荐

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);

  // Opens source dir.

  if (!is_dir($dst)) mkdir($dst,0755);

  // Make dest dir.

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

  if (($file!=".") and ($file!="..")) {

  // Skips . and .. dirs

  $srcm=$src."/".$file;

  $dstm=$dst."/".$file;

  if (is_dir($srcm)) {

  // If another dir is found

  mover($srcm,$dstm);

  // calls itself - recursive WTG

  } else {

  copy($srcm,$dstm);

  unlink($srcm);

  // Is just a copy procedure is needed

  } // comment out this line

  }

  }

  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)

  {

  //echo $temp.$base.'<br/>';

  $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递归遍历多维数组的方法10-06

PHP遍历目录文件常用方法09-23

php递归创建和删除文件夹的代码09-21

用php自定义函数之递归删除文件及目录09-13

PHP使用递归算法无限遍历数组示例05-20

用PHP遍历目录下的全部文件06-13

PHP读取文件的正确方法09-02

PHP递归效率分析08-25

php读取文件内容的方法09-14

php在线解压ZIP文件的方法07-31