Я написал функцию под названием getContents():функция getContents() возвращают неожиданные результаты
// Get contents of specific DIR. Will recur through all directories.
function getContents($path, $skip_dir = FALSE, $skip_files = "", $dir_only = FALSE, $recurse = TRUE)
{ if($skip_files == "") $skip_files = array();
$getContentsTmp = array();
foreach(scandir($path, 1) as $file)
{
if(($file != ".") && ($file != ".."))
{ if((is_file($path . "/" . $file)) && (!in_array(pathinfo($path . "/" . $file,PATHINFO_EXTENSION),$skip_files)) && (!$dir_only)) {
array_push($getContentsTmp, $file);
}
if((is_dir($path . "/" . $file)) && (!$skip_dir)) {
if($recurse) {
$getContentsTmp[$file] = getContents($path . "/" . $file, $skip_files, $dir_only, $recurse);
} else {
array_push($getContentsTmp,$file);
// or $getContentsTmp[$file] = "";
}
}
}
}
ksort($getContentsTmp);
return $getContentsTmp;
}
Он работал отлично в течение длительного времени. Но по какой-то причине я сейчас использую его в другом каталоге, и он не возвращает ожидаемых результатов. Я сузил его до переменной $dir_only
. По какой-то причине он проходит как истинный, даже если я его не установлю. Я нигде не изменяю переменную, поэтому я не знаю, почему это происходит.
Вызов функции состоит в следующем:
$e = getContents("my_dir");
Если я эхо из результатов в функции, он видит все файлы и подпапке правильно, но когда он идет, чтобы вызвать функцию снова изнутри самого себя (после if($recurse)
), он проходит через $ dir_only, но похоже, что он интерпретируется как истинный. Я не могу понять, почему.
Большое спасибо. Я бы никогда этого не видел :) – Chud37