Почему require_once обнуляет имя переменной на последней итерации readdir()?
Почему 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);
1 ответ
Что-то в require.php меняло $filename благодаря @Mark
Редактировать Думаю, я понял:
function requireDir($folder, $subs, &$added){
$contents = opendir($folder);
while($filename = readdir($contents)){
$wholename = $folder.'/'.$filename;
if(is_dir($wholename)){
if($filename != '.' && $filename != '..'){
if($subs){
requireDir($wholename,$added);
}
}
}else if(is_file($wholename)){
$added[] = $wholename;
}
}
}