Задать вопрос

Зачем присваивать переменной результат readdir()?

Собственно, вопрос:
Почему обязательно присваивание переменной результата работы функции readdir() в условиях?
$d = opendir($path);
if( ($f = readdir($d)) !== false ) {
//code
}
closedir($d);


Почему не срабатывает корректно:

$d = opendir($path);
if( readdir($d) !== false ) {
//code
}
closedir($d);
  • Вопрос задан
  • 100 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@alexalexes
Функция readdir(), как правило, используется вместе с while.
За один цикл нужно только один раз вызвать readdir, чтобы можно было поработать с дескриптором элемента каталога, не перейдя на другой элемент, поэтому появится такая неуклюжесть :
while(true)
{
  $f = readdir($d);
  if($f === fasle)
  {  break; }
  // Сделать что-то с $f в противном случае.
}

А если писать присваивание в одну строчку, там же, где хотим выйти из цикла, то получается очень компактно.
Возможно, стиль кода по while плавно перешел в if.
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 2
FanatPHP
@FanatPHP
Чебуратор тега РНР
А какой смысл НЕ присваивать переменной результат readdir()?
Какой смысл вызывать функцию, которая возвращает значение, но не использовать его?

Просто подумай над своим вопросоам и сотри его как бессмысленный.
Ответ написан
В переменную $f присваивается значение функции readdir (), и уже переменная $f сравнивается с флагом в инверсии.
Если переменная $f нигде больше не используется, то нет, не надо.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы