对于根目录和所有子目录中的每个文件


Foreach file in root directory and all sub directories

我想include项目中每个目录中的每个文件。我目前拥有的是,我include特定目录中的每个文件

foreach (glob("*.php") as $filename)
{
    include_once $filename;
}

但我也想对我拥有的每个目录和其中的所有文件做同样的事情。我听说过__autoload函数,但有时我也需要它用于非类函数。

在此手册页上,第一个注释给出了一个以递归方式列出所有文件的函数。只需对其进行调整以满足您的需求:

<?php
function include_all_php_files($dir)
{
    $root = scandir($dir);
    foreach($root as $value)
    {
        if($value === '.' || $value === '..') {continue;}
        if(is_file("$dir/$value") && preg_match('#'.php$#', $value))
        {
            include_once ("$dir/$value");
            continue;
        }
        include_all_php_files("$dir/$value");
    }
}
?>

归是你的朋友。

/**
 * @param string path to the root directory 
 */
function include_files($dir) {
    foreach (glob($dir . "/*") as $file) {
        if(is_dir($file)){
           include_files($file);
        } else {
           include_once($file);
        }
    }
}

试试这个。这对我有用。

$accepted_extension = array("jpeg", "jpg", "gif", "bmp", "png");
$return = array();
$results = scandir($folder);
foreach ($results as $result) {
    if ($result == '.' or $result == '..')
        continue;
    else if (is_dir($folder . '/' . $result))
        continue;
    else {
        $extn = substr($result, strpos($result, ".") + 1);
        if (in_array($extn, $accepted_extension)) {
            $return[] = $result;
        }
    }
}