Начну с серьёзной:
Эта поправка касается способа прохода по дериктории - в мануале стоит:
Код: Выделить всё
Обратите внимание на способ, которым return -значение функции
readdir() проверяется в следующем примере. Мы явным образом
проверяем, идентично ли return-значение (равно и того же типа, что и
-- см. Операции сравнения) FALSE, поскольку иначе любое вхождение
директории, имя которого вычисляется в FALSE, остановит цикл.
Пример 1. Список всех файлов в директории
// Обратите внимание, что !== не существовала до 4.0.0-RC2
<?php
if ($handle = opendir('/path/to/files')) {
echo "Directory handle: $handle\n";
echo "Files:\n";
/* Это корректный способ цикла по директории. */
while (false !== ($file = readdir($handle))) {
echo "$file\n";
}
/* Это НЕПРАВИЛЬНЫЙ способ цикла по директории. */
while ($file = readdir($handle)) {
echo "$file\n";
}
closedir($handle);
}
?>соответственно, данный момент надо подправить
И ещё моё личное замечание:
Касается вот этой строчки
Код: Выделить всё
if(filetype($b)!=dir)Если надо отфильтровывать директории, то намного легче будет так написать
Код: Выделить всё
if(!is_dir($b))filetype как мне кажется, более ресурсоёмкая, так как она больше вариантов проверки в себя включает, а is_dir отвечает всего лишь на один вопрос:папка или не папка. Там где счёт файлов ведётся на десятки тысяч это может сыграть свою роль
Будут ещё идеи, напишу