PHP, если условие с булевым

Почему это происходит ?

<?php $result = true ; if($result == 'SOME TEXT') echo 'why is this true? why is this printed?'; else echo 'when this should be printed?' ?> 

Пожалуйста, объясните, я не ищу альтернативный метод.

В вашем выражении вы сравниваете логическое значение со строкой. Строка привязана к true .

Ссылка: http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting

Как указано выше, используйте === для сравнения значения и типа.

Потому что вы используете == operator вместо === . В вашем случае == не полагается на тип операндов, а не ===

Это из-за автоматического преобразования типа PHP; и поскольку вы не сравниваете по типу (===), он считается TRUE. Вот список того, что считается пустым, но также считается FALSE:

Следующие вещи считаются пустыми:

"" (пустая строка)

0 (0 как целое число)

0.0 (0 в качестве поплавка)

«0» (0 в виде строки)

НОЛЬ

ЛОЖНЫЙ

array () (пустой массив)

$ Var; (объявленная переменная, но без значения)

Все остальное в основном считается ИСТИННЫМ.

Я взглянул на документацию оператора php.

В вашем случае вы говорите с == что логическое значение «true» равно текстовому значению «НЕКОТОРЫЙ ТЕКСТ», но не относится к одному типу данных. PHP возвращает true в этом случае, потому что если вы считаете, что они похожи, если вы игнорируете тип данных.

Если вы использовали === тогда он рассмотрит тип данных и, следовательно, произведет значение false.

Поскольку вы сравниваете логическое значение со строкой, строка будет автоматически преобразована в логическую.

Согласно PHP-документации, любая строка, которая не является null или empty (или нулевой), будет преобразована в True.

Итак, ваше сравнение похоже на True == True.

Если вы используете оператор === , вы также проверяете, что оба значения одного типа.

http://www.php.net/manual/en/language.types.boolean.php#language.types.boolean.casting