Home > Backend Development > PHP Tutorial > How to traverse directories in php, example of php non-recursive algorithm for traversing directories

How to traverse directories in php, example of php non-recursive algorithm for traversing directories

WBOY
Release: 2016-07-25 08:51:29
Original
929 people have browsed it
  1. function myscandir($pathname){
  2. foreach( glob($pathname) as $filename ){
  3. if(is_dir($filename)){
  4. myscandir($filename.'/*' );
  5. }else{
  6. echo $filename.'
    ';
  7. }
  8. }
  9. }
  10. myscandir('D:/wamp/www/exe1/*');
  11. ?>
Copy the code

2. Method 2

  1. function myscandir($path){
  2. $mydir=dir($path);
  3. while($file=$mydir->read()){
  4. $p=$path .'/'.$file;
  5. if(($file!=".") AND ($file!="..")){
  6. echo $p.'
    ';
  7. }
  8. if( (is_dir($p)) AND ($file!=".") AND ($file!="..")){
  9. myscandir($p);
  10. }
  11. }
  12. }
  13. myscandir(dirname(dirname( __FILE__)));
  14. ?>
Copy code

2. Usage of php directory traversal function opendir

The function of opendir() function: Open the directory handle. If the function runs successfully, it will return a set of directory streams (a set of directory strings). If it fails, it will return an error [error]. You can add "@" at the front of the function to hide the error.

syntax syntax: opendir(directory,context) parameter

Parameter:description

Description: directory required. specifies the directory to stream Required parameters specify the directory object. Optional parameters specify the context of the directory object that needs to be processed. This context includes a set of options that can change the display mode of the text stream.

Code:

  1. $dir = "./";
  2. // open a known directory, and proceed to read its contents
  3. if (is_dir($dir))
  4. {
  5. if ($dh = opendir($dir)) {
  6. while (($file = readdir($dh)) !== false) {
  7. echo "filename: $file : filetype: " . filetype($dir . $file) . "n "."
    ";
  8. }
  9. closedir($dh);
  10. }
  11. }
  12. ?>
PHP does not need to recurse to implement the code to list all files in a directory
Code:

/**

* PHP non-recursive implementation to query all files in the directory

* @param unknown $dir

* @return multitype:|multitype:string
*/
function scanfiles($dir) {
    if (! is_dir ( $dir ))
  1. return array ();

  2. < ;p> // Compatible with all operating systems
  3. $dir = rtrim ( str_replace ( '\', '/', $dir ), '/' ) . '/';

  4. // Stack, the default value is the passed in directory

  5. $dirs = array ( $dir );

  6. // Container to place all files

  7. $rt = array ();

  8. do {

  9. // Pop the stack
  10. $dir = array_pop ( $dirs );

  11. // Scan the directory

  12. $tmp = scandir ( $dir );
  13. foreach ( $tmp as $f ) {

  14. // Filter. ..
  15. if ($f == '.' || $f == '..')
  16. continue;
  17. // Combine the current absolute path
  18. $path = $dir . $f;
  19. // If it is a directory, push it onto the stack.
  20. if (is_dir ( $path )) {
  21. array_push ( $dirs, $path . '/' );
  22. } else if (is_file ( $path )) { // If it is a file, put it in the container
  23. $rt [ ] = $path;
  24. }
  25. }

  26. } while ( $dirs ); // Until there is no directory in the stack

  27. return $rt;

  28. }< ;/p>
  29. Copy code
source:php.cn
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template