【发布时间】:2014-01-10 16:05:32
【问题描述】:
为什么 require_once 在 readdir() 的最后一次迭代中清除变量名?
$added = array();
$folder = 'database';
$contents = opendir($folder);
while($filename = readdir($contents)){
if(! is_dir($filename) ) {//if not dir
echo '<BR/><BR/>';
var_dump($filename);
echo '<BR/>';
$added[] = $folder.'/'.$filename;
require_once($folder.'/'.$filename);
var_dump($filename);
}
}
我得到以下输出:
string(8) "init.php"
string(8) "init.php"
string(14) "dbContract.php"
string(14) "dbContract.php"
string(12) "requires.php"
NULL
代替:
string(8) "init.php"
string(8) "init.php"
string(14) "dbContract.php"
string(14) "dbContract.php"
string(12) "requires.php"
string(12) "requires.php"
但是,当我注释掉该行时,我确实得到了预期的输出:
require_once($folder.'/'.$filename);
【问题讨论】:
-
您排除了 .和..?
-
可能
requires.php中的某些内容覆盖了$filename的值 -
谢谢,就是这样@Mark