Intereting Posts
Когда я использую c9.io, как я могу подключиться к MySQL? Метод отношений должен возвращать объект типа Illuminate \ Database \ Eloquent \ Relations \ Relation из вызова модели, не видя в Laravel 4 Как написать SQL-запрос, который подсчитывает количество строк в месяц и год? test, если массив содержит значение, используя PHPUnit как реализовать систему входа под php? Как эффективно реализовать модули в среде MVC и обрабатывать маршрутизацию на несколько контроллеров в одном модуле? Как создать индикатор прогресса на стороне сервера в JavaScript? Вызов неопределенной функции __ () error – phpMyAdmin Как проверить ввод формы на одной странице с помощью случайных чисел? PHP – Удаление косой черты с хвоста URL-адреса Захват поисковых ключевых слов в php Обходной путь вместо использования websockets / ajax-long-pulling php – Как перенаправить пользователя на основе ввода формы? HTML Element Array, name = "something " или name = "something"? Почему мой вывод CSV содержит каждый столбец дважды?

Является ли оператор == транзитивным в PHP?

В JavaScript оператор == не обязательно является транзитивным:

 js> '0' == 0 true js> 0 == '' true js> '0' == '' false 

То же самое верно в PHP? Можете ли вы привести пример?

Solutions Collecting From Web of "Является ли оператор == транзитивным в PHP?"

Нет , оператор == не является транзитивным.

Тот же самый сценарий дает тот же результат в PHP.

 echo var_dump('0'==0); echo var_dump(0==''); echo var_dump('0'==''); 

выходы:

 boolean true boolean true boolean false 

То же самое верно в PHP:

 //php '0'==0 //true 0=='' //true ''=='0' //false 

Вы сами не тестировали? Это те же самые заявления, которые вы указали для javascript.

 array() == NULL // true 0 == NULL // true array() == 0 // false 

Проблема с языками сценариев заключается в том, что мы начинаем сравнивать вещи нестрогим образом, что приводит к различным чувствам «равенства». когда вы сравниваете «0» и «0», вы имеете в виду что-то другое, тогда, когда вы сравниваете «0» и «NULL». Таким образом, имеет смысл, что эти операторы не будут транзитивными. Однако рефлексивность должна быть инвариантом. Равенство по определению рефлексивно. Независимо от того, какой смысл вы подразумеваете равенство, всегда должно быть верно, что A равно себе.

еще более очевидным:

 true == 1 // true true == 2 // true 1 == 2 // false