помогите написать функцию более профессионально и менее ресурсоемко и короче

Аватара пользователя
vadimiron

Re: помогите написать функцию более профессионально и менее ресурсоемко и короче

Сообщение vadimiron »

Я могу предложить небольшие косметические поправки и одну серьёзную поправку

Начну с серьёзной:

Эта поправка касается способа прохода по дериктории - в мануале стоит:

Код: Выделить всё

Обратите внимание на способ, которым 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 отвечает всего лишь на один вопрос:папка или не папка. Там где счёт файлов ведётся на десятки тысяч это может сыграть свою роль

Будут ещё идеи, напишу
Аватара пользователя
E-mail

Re: помогите написать функцию более профессионально и менее ресурсоемко и короче

Сообщение E-mail »

поправляем и получаем:





PHP код:

Код: Выделить всё

function view_dir($dir) 

{ 

$a=opendir($dir); 

while(false!==($b=readdir($a)))

if(!is_dir($b))

$r[dir][]=$b;

closedir($a);

return $r; 

} 



foreach(view_dir('./') as $a) 

foreach($a as $page) 

echo $page."
"; 






спасибо!

я вот думаю а как бы полутше вот это написать, и по короче



PHP код:

Код: Выделить всё

foreach(view_dir('./') as $a) 

foreach($a as $page) 



Аватара пользователя
E-mail

Re: помогите написать функцию более профессионально и менее ресурсоемко и короче

Сообщение E-mail »

vadimiron

is_dir возвращает false только если директории не существует, придется использовать как и использовал filetype
Ответить

Вернуться в «Вебмастеру»