PHP 遍历文件实现代码

复制代码 代码如下:

  function Files($path)

  {

  foreach(scandir($path) as $line)

  {

  if($line=='.'||$line=='..') continue;

  if(is_dir($path.'/'.$line)) Files($path.'/'.$line);

  else echo '<li>'.$path.'/'.$line.'</li>';

  }

  }

  PHP遍历文件及文件夹

  加入给定文件夹 C:\\Windows\\AppPatch

  1.首先获取这个文件夹下面的所有东西,也就是文件,文件夹,放一个数组里面

  $fileArr = array(

  'files' => array(), //文件放一个数组

  'dirs' => array(), //文件夹放一个数组

  )

  2.如果存在子文件夹,遍历子文件夹,获取文件夹和文件,同样放进那个数组,如此循环,一个不漏

  

复制代码 代码如下:

  <?php

  $dir = 'F:\\game';

  function read_dir_all($dir) {

  $ret = array('dirs'=>array(), 'files'=>array());

  if ($handle = opendir($dir)) {

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

  if($file != '.' && $file !== '..') {

  $cur_path = $dir . DIRECTORY_SEPARATOR . $file;

  if(is_dir($cur_path)) {

  $ret['dirs'][$cur_path] = read_dir_all($cur_path);

  } else {

  $ret['files'][] = $cur_path;

  }

  }

  }

  closedir($handle);

  }

  return $ret;

  }

  $p = read_dir_all($dir);

  echo '<pre>';

  var_dump($p);

  echo '</pre>';

  ?>

  php遍历一个文件夹下的所有目录及文件

  在面试中我们经常遇到这个题目:php遍历一个文件夹下的所有文件和子文件夹。

  这个题目有好多种解决方法。但大致思路都一样。采用递归。

  

复制代码 代码如下:

  $path = './filepath';

  function getfiles($path)

  {

  if(!is_dir($path)) return;

  $handle = opendir($path);

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

  {

  if($file != '.' && $file!='..')

  {

  $path2= $path.'/'.$file;

  if(is_dir($path2))

  {

  echo ' ';

  echo $file;

  getfiles($path2);

  }else

  {

  echo ' ';

  echo $file;

  }

  }

  }

  }

  print_r( getfiles($path));

  echo '<HR>';

  function getdir($path)

  {

  if(!is_dir($path)) return;

  $handle = dir($path);

  while($file=$handle->read())

  {

  if($file!='.' && $file!='..')

  {

  $path2 = $path.'/'.$file;

  if(is_dir($path2))

  {

  echo $file."\t";

  getdir($path2);

  }else

  {

  echo $file.' ';

  }

  }

  }

  }

  getdir($path);

  echo '<HR>';

  function get_dir_scandir($path){

  $tree = array();

  foreach(scandir($path) as $single){

  if($single!='.' && $single!='..')

  {

  $path2 = $path.'/'.$single;

  if(is_dir($path2))

  {

  echo $single."\r\n";

  get_dir_scandir($path2);

  }else

  {

  echo $single."\r\n";

  }

  }

  }

  }

  get_dir_scandir($path);

  echo '

  <HR>';

  function get_dir_glob(){

  $tree = array();

  foreach(glob('./curl/*') as $single){

  echo $single."\r\n";

  }

  }

  get_dir_glob();

  echo '

  <HR>';

  function myscandir($path)

  {

  if(!is_dir($path)) return;

  foreach(scandir($path) as $file)

  {

  if($file!='.' && $file!='..')

  {

  $path2= $path.'/'.$file;

  if(is_dir($path2))

  {

  echo $file;

  myscandir($path2);

  }else

  {

  echo $file.' ';

  }

  }

  }

  }

  myscandir($path);

  echo '<HR>';

  function myglob($path)

  {

  $path_pattern = $path.'/*';

  foreach(glob($path_pattern) as $file)

  {

  if(is_dir($file))

  {

  echo $file;

  myscandir($file);

  }else

  {

  echo $file.' ';

  }

  }

  }

  myglob($path);