Булевы значения строк PHP

Я пытаюсь понять истинность строк в PHP. Я подумал, что это может быть похож на другой язык сценариев, как Javascript или Python.

> var_dump((bool)"");
bool(false);

> var_dump((bool)"hello");
bool(true);

Хорошо, имеет смысл.

Потом я попробовал

> var_dump((bool)"0");
bool(false);

В самом деле? Это странно. Я предполагаю, что PHP пытается сначала разобрать строку как число. Так что это также должно быть false

> var_dump((bool)"00");
bool(true);

А?!? Я действительно смущен и хотел бы знать, что делает строку правдивой или нет.

Я пока не смог ничего найти.

2 ответа

См. Документы для преобразования в логическое значение:

При преобразовании в логическое значение следующие значения считаются ЛОЖНЫМИ:

the boolean FALSE itself
the integer 0 (zero)
the float 0.0 (zero)
the empty string, and the string "0"
an array with zero elements
an object with zero member variables (PHP 4 only)
the special type NULL (including unset variables)
SimpleXML objects created from empty tags

Любое другое значение считается ИСТИННЫМ (включая любой ресурс).

Из логической документации PHP

При преобразовании в логическое значение следующие значения считаются ЛОЖНЫМИ:

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

Так что да, ваш пример имеет смысл, 0 является логическим ложным в то время как 00 это строка и это правда

Другие вопросы по тегам