PHP readdir () и возвращение ложного значения - PullRequest
0 голосов
/ 04 октября 2019

В соответствии с информацией о https://www.php.net/manual/en/function.readdir.php, функция readdir()

может возвращать логическое значение FALSE, но также может возвращать не логическое значение, которое оценивается как FALSE.

и соответственно рекомендует использовать для тестирования ===.

Какое это может быть не булево значение? В моем тестировании я могу получить ложное значение false, как в следующем примере:

$dirname='0';   //  misinterpreted
print $dirname==false?'false':'true';

Все остальные строки интерпретируются как true.

Есть лилюбые другие строки, которые будут оцениваться как ложные? Или есть какой-то другой результат возврата, который оценивается как ложный?

1 Ответ

0 голосов
/ 04 октября 2019

Есть ли какие-либо другие строки, которые оценили бы как ложные? Или есть какой-то другой возвращаемый результат, который оценивается как ложный?

В руководстве для логического типа перечислены все значения, которые рассматриваются как ложные, https://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting:

КогдаПри преобразовании в логическое значение следующие значения считаются ложными:

  • само логическое значение ЛОЖЬ
  • целые числа 0 и -0 (ноль)
  • значения с плавающей запятой 0,0 и -0.0 (ноль)
  • пустая строка, а строка "0"
  • массив с нулевыми элементами
  • специальный тип NULL (включая неустановленные переменные)
  • SimpleXML объекты, созданные из пустых тегов

И readdir

[r] отменяет имя записи в случае успеха или FALSEв случае ошибки

- поэтому, если вы не получаете false, значение всегда должно быть строкой. (Записи каталога всегда считаются строковыми значениями, на этом уровне понятия «число» не существует.)

...