Что является различием между теми PHP если выражения!?
if ($var !== false)
{
// Do something!
}
if (false !== $var)
{
// Do something!
}
Некоторые платформы как Платформа Зенда используют последнюю форму, в то время как традиционное является первым.
Заранее спасибо
Результат выражения тот же самый, однако это хороший способ защитить себя от присваивания вместо сравнения (например, написав if ($ var = false)
вместо if ($ var == false)
, поскольку вы не можете присвоить значение $ var
ключевому слову false
)
Нет никакой разницы. ! ==
сравнивает 2 выражения с проверкой типов и возвращает истину, если они не равны. Различие может заключаться в порядке оценки выражений, но в том случае, если вы написали, разницы нет (и хорошая программа не должна полагаться на порядок выполнения таких выражений).
Рассмотрим следующий сценарий:
if (strpos($string, $substring)) { /* found it! */ }
Если $ substring
найдена в точном начале $ string
, возвращается значение 0.
К сожалению, внутри if это оценивается как false
, поэтому условное выражение не выполняется.
Правильный способ обработки:
if (false !== strpos($string, $substring)) { /* found it! */ }
Заключение:
false
всегда гарантированно ложно. Другие значения могут не гарантировать этого. Например, в PHP 3 empty ('0')
был true
, но позже он изменился на false
.
На самом деле это просто предпочтение. Вы можете указать любой вариант: a == b или b == a, но проще ошибиться, если вы сделаете
if ($var == false)
, потому что, если вы случайно наберете его с one = letter, условие всегда будет равно true (потому что $ var будет установлен успешно), но в случае
if (false == $var)
, если вы теперь введете =, вы получите ошибку.
На самом деле нет никакой разницы. Операнды просто по разные стороны, но сравнение, тем не менее, то же самое.
Два выражения семантически идентичны. Это просто вопрос предпочтения, ставить ли константное выражение первым или последним.