Foreach文件位于根目录和所有子目录中

时间:2013-11-09 15:27:03

标签: php file include

我希望include项目中每个目录中的每个文件。我目前所拥有的是,我include来自特定目录的每个文件

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

但我也想为我拥有的每个目录和那里的所有文件做同样的事情。我听说过__autoload函数,但有时我也需要非函数函数。

3 个答案:

答案 0 :(得分:1)

递归是你的朋友。

/**
 * @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);
        }
    }
}

答案 1 :(得分:1)

On this man page,第一个注释提供了一个递归列出所有文件的函数。只需根据您的需求进行调整:

<?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");
    }
}
?>

答案 2 :(得分:0)

试试这个。这对我有用。

$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;
        }
    }
}