Форум: Форум PHPФорум ApacheФорум Регулярные ВыраженияФорум MySQLHTML+CSS+JavaScriptФорум FlashРазное
Новые темы: 0000000
PHP 5/6. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель MySQL 5. Авторы: Кузнецов М.В., Симдянов И.В. Самоучитель PHP 5 / 6 (3 издание). Авторы: Кузнецов М.В., Симдянов И.В. MySQL 5. В подлиннике. Авторы: Кузнецов М.В., Симдянов И.В. PHP на примерах (2 издание). Авторы: Кузнецов М.В., Симдянов И.В.
ВСЕ НАШИ КНИГИ
Консультационный центр SoftTime

Форум PHP

Выбрать другой форум

 

Здравствуйте, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Маленький вопрос по чтению дирректорий, функция readdir
 
 автор: totx   (13.08.2005 в 11:10)   письмо автору
 
 

Есть маленький код:

<?php
$folder 
'name_dir';
$dir1 opendir($folder);
while((
$line readdir($dir1)) !==false)
{  print 
"Дирректория ".$line." не пуста";
}
?>

Но есть такой факт, что при чтении дирректории в ней полюбому есть . и ..
Так вот вопрос в том как заставить функцию readdir не видеть эти b]. [/b]и ..

   
 
 автор: cheops   (13.08.2005 в 12:07)   письмо автору
 
   для: totx   (13.08.2005 в 11:10)
 

Это обычно явно указывается условием if
<?php 
$folder 
'name_dir'
$dir1 opendir($folder); 
while((
$line readdir($dir1)) !==false
{
  if(
$line != "." && $line != "..") print "Дирректория ".$line." не пуста"

?>

   
 
 автор: totx   (14.08.2005 в 10:08)   письмо автору
 
   для: cheops   (13.08.2005 в 12:07)
 

Этим if($line != "." && $line != "..") Вы всего лишь закрываете себе глаза на . и ..
Не верите, лего проверить скриптом:

<?php
$folder 
'name_dir';
$dir1 opendir($folder);
while((
$line readdir($dir1)) !==false)
{
if(
$line != "." && $line != "..") print "Директория ".$line." не пуста";
else print 
"Директория ".$folder." пуста";
}
?>

И если в дирректории name_dir нет папок, то этот скрипт выведет сообщение print "Директория ".$folder." пуста"; аж 2 раза, что подтверждает пресутствие этих самых . и ..
А я ведь спрашивал ни как мне глазки закрыть, а как закрыть глазки функции readdir
Ну что есть предложения ?

   
 
 автор: cheops   (14.08.2005 в 13:34)   письмо автору
 
   для: totx   (14.08.2005 в 10:08)
 

А понял... обычно логику выполнения задачи и печати результата стараются разделять - если вам требуется вывести фразу один раз, её и не следует помещать в цикл while - так как вероятность совершения ошибки велика. Обычно вводят логический флаг, например, $is_dir_empty, который принимает значение true, когда директория пуста и false, в противном случае.
<?php 
  $folder 
'name_dir'
  
$dir opendir($folder); 
  
$is_dir_empty true;
  while((
$line readdir($dir)) !==false
  { 
    if(
$line != "." && $line != "..")
    {
       
$is_dir_empty false;
       break;
    }
  } 
  if(
$is_dir_empty) print "Директория ".$folder." не пуста"
  else print 
"Директория ".$folder." пуста"
  
closedir($dir); 
?>

   
 
 автор: Axxil   (13.08.2005 в 12:41)   письмо автору
 
   для: totx   (13.08.2005 в 11:10)
 

А ещё, начиная с версии 4.3.0 появилась функция glob
http://php.rinet.ru/manual/ru/function.glob.php
На порядок удобнее с файлами работать стало

   
Rambler's Top100
вверх

Rambler's Top100 Яндекс.Метрика Яндекс цитирования