Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » помогите написать функцию более профессионально и менее ресурсоемко и короче

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

Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


Изменения
Автор: E-mail
Дата: 27-02-2005
PHP код: Выделить весь код

function view_dir($dir)

{
$a=opendir($dir);
while(
$b=readdir($a))
{
if(
filetype($b)!=dir)
{
$r[filetype($b)][]=$b;
}
}
closedir($a);
return 
$r;
}

$mass=view_dir('./');
foreach(
$mass[file] as $a)
{
echo 
$a."<br>";



Отправлено: 23:52, 26-02-2005

 

Аватара для vadimiron

Ветеран


Сообщения: 1864
Благодарности: 120

Профиль | Отправить PM | Цитировать


Я могу предложить небольшие косметические поправки и одну серьёзную поправку
Начну с серьёзной:
Эта поправка касается способа прохода по дериктории - в мануале стоит:
PHP код: Выделить весь код

Обратите внимание на способ, которым 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);
}
?>

соответственно, данный момент надо подправить


И ещё моё личное замечание:
Касается вот этой строчки
PHP код: Выделить весь код

if(filetype($b)!=dir

Если надо отфильтровывать директории, то намного легче будет так написать
PHP код: Выделить весь код

if(!is_dir($b)) 


filetype как мне кажется, более ресурсоёмкая, так как она больше вариантов проверки в себя включает, а is_dir отвечает всего лишь на один вопрос:папка или не папка. Там где счёт файлов ведётся на десятки тысяч это может сыграть свою роль
Будут ещё идеи, напишу

Последний раз редактировалось vadimiron, 01-03-2005 в 02:39.


Отправлено: 02:33, 01-03-2005 | #11



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


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

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."<br>"

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

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


Отправлено: 00:44, 02-03-2005 | #12


Аватара для E-mail

Ветеран


Сообщения: 640
Благодарности: 2

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Основы HTML | Конференции


Отправлено: 04:26, 17-04-2005 | #13


Аватара для Prisoner

Engrossed by the Void


Сообщения: 2229
Благодарности: 60

Профиль | Отправить PM | Цитировать


А еще она возвращает false когда применена к файлу.

-------
Не могу дать более дельный совет - не хватает системных ресурсов...


Отправлено: 13:34, 18-04-2005 | #14



Компьютерный форум OSzone.net » Компьютеры + Интернет » Вебмастеру » помогите написать функцию более профессионально и менее ресурсоемко и короче

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Хочу купить КПК не менее 500 МГц и оперативкой не менее 128 МБ gulpit Мобильные ОС, смартфоны и планшеты 24 23-04-2009 13:03
Почему Windows на менее мощном компе грузится быстрее, чем на более мощном! Арикалика Хочу все знать 15 20-03-2009 22:21
Помогите Batник написать. kda12 Microsoft Windows NT/2000/2003 10 10-05-2006 23:34
Помогите написать драйвер Guest Программирование и базы данных 2 30-03-2004 14:23
Помогите написать скрипт!!! Sergei Antoshkin Вебмастеру 1 13-03-2003 18:22




 
Переход