note 84638 deleted from function.scandir by cmb

From: Date: Sun, 17 Nov 2019 09:05:07 +0000
Subject: note 84638 deleted from function.scandir by cmb
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-213118@lists.php.net to get a copy of this message
Note Submitter: webmaster at asylum-et dot com ---- <?php /** * outputs all files and directories * recursively starting with the given * $base path. This function is a combination * of some of the other snips on the php.net site. * All are good but lacked one thing or another * that I needed like .htaccess * files get excluded with the one that checks to * see if the first character is a . and omits * that. * * @example rscandir(dirname(__FILE__).'/')); * @param string $base * @param array $omit * @param array $data * @return array */ function rscandir($base='', &$data=array()) { $array = array_diff(scandir($base), array('.', '..')); # remove ' and .. from the array */ foreach($array as $value) : /* loop through the array at the level of the supplied $base */ if (is_dir($base.$value)) : /* if this is a directory */ $data[] = $base.$value.'/'; /* add it to the $data array */ $data = rscandir($base.$value.'/', $data); /* then make a recursive call with the current $value as the $base supplying the $data array to carry into the recursion */ elseif (is_file($base.$value)) : /* else if the current $value is a file */ $data[] = $base.$value; /* just add the current $value to the $data array */ endif; endforeach; return $data; // return the $data array } echo '<pre>'; var_export(rscandir(dirname(__FILE__).'/')); echo '</pre>'; /* Output: array ( 0 => '/path/to/web/.htaccess', 1 => '/path/to/web/foo/', 2 => '/path/to/web/foo/file.txt' ) */ ?>

« previous php.notes (#213118) next »