Как работает true / false в PHP?
Интересно, как PHP обрабатывает истинное / ложное сравнение внутри. Я понимаю, что true определяется как 1, а false определяется как 0. Когда я делаю if("a"){ echo "true";}
это echos « true ». Как PHP распознает «a» как 1?
5 Solutions collect form web for “Как работает true / false в PHP?”
Это описано в документации PHP для булевых таблиц и таблиц сравнения типов .
При преобразовании в boolean следующие значения считаются FALSE:
- сама логическая
FALSE
- целое число
0
(ноль) - поплавок
0.0
(ноль) - пустая строка и строка
'0'
- массив с нулевыми элементами
- объект с нулевыми переменными-членами (только для PHP 4)
- специальный тип
NULL
(включая неустановленные переменные) - Объекты SimpleXML, созданные из пустых тегов
Каждое другое значение считается ИСТИННЫМ .
Ноль – ложь, отличное от нуля.
В php вы можете более точно проверить использование оператора ===
.
if (0==false) echo "works"; // will echo works if (0===false) echo "works"; // will not echo anything
Лучшим оператором для строгой проверки является
if($foo === true){}
Таким образом, вы действительно проверяете, действительно ли это правда, а не 1 или просто просто установлено.
PHP использует слабую типизацию (которую он называет «жонглирование типа»), что является плохой идеей (хотя это разговор в другое время). Когда вы пытаетесь использовать переменную в контексте, который требует логического значения, он преобразует любую вашу переменную в логическую, в соответствии с некоторыми в основном произвольными правилами, доступными здесь: http://www.php.net/manual/en/language .types.boolean.php # language.types.boolean.casting
is_false(type value)
оператор как унарную функцию: is_false(type value)
которая возвращает true или false, в зависимости от конкретной реализации для определенного типа и значения. Рассмотрите, если оператор вызывать такую функцию неявно, через синтаксический сахар.
Другая возможность заключается в том, что тип имеет оператор cast, который неявно превращает тип в другой тип, в этом случае строка в Boolean.
PHP не раскрывает такие детали, но C ++ позволяет перегрузку оператора, которая предоставляет мелкие детали реализации оператора.