PHP Conference Kansai 2025

Voting

: five minus four?
(Example: nine)

The Note You're Voting On

sreekumar [at] sreek [dot] in
14 years ago
A function I created to non-recursively get the path of all files and folders including sub-directories of a given folder.
Though I have not tested it completely, it seems to be working.

<?php

/**
* Finds path, relative to the given root folder, of all files and directories in the given directory and its sub-directories non recursively.
* Will return an array of the form
* array(
* 'files' => [],
* 'dirs' => [],
* )
* @author sreekumar
* @param string $root
* @result array
*/
function read_all_files($root = '.'){
$files = array('files'=>array(), 'dirs'=>array());
$directories = array();
$last_letter = $root[strlen($root)-1];
$root = ($last_letter == '\\' || $last_letter == '/') ? $root : $root.DIRECTORY_SEPARATOR;

$directories[] = $root;

while (
sizeof($directories)) {
$dir = array_pop($directories);
if (
$handle = opendir($dir)) {
while (
false !== ($file = readdir($handle))) {
if (
$file == '.' || $file == '..') {
continue;
}
$file = $dir.$file;
if (
is_dir($file)) {
$directory_path = $file.DIRECTORY_SEPARATOR;
array_push($directories, $directory_path);
$files['dirs'][] = $directory_path;
} elseif (
is_file($file)) {
$files['files'][] = $file;
}
}
closedir($handle);
}
}

return
$files;
}
?>

<< Back to user notes page

To Top