В PHP есть два метода проверки на равенство. В случае ниже, какой метод является правильным?
settype($var,"integer");
$var = 1;
if ($var == 1)
then return(true);
else
return(false);
if ($var === 1)
then return(true);
else
return(false);
Они оба сравнивают на равенство 1. Однако второе утверждение проверяет, идентичны ли они. 1 — это константа, а $ var — целочисленная переменная, для которой установлено значение 1. Конечно, ($ var == 1) более правильно? Пожалуйста, помогите мне понять, так как ($ var === 1) сравнивает переменную с константой.
== сравнивает значения переменных на равенство, приведение типов по необходимости. === проверяет, имеют ли две переменные одинаковый тип и имеют ли они одинаковое значение. Например 1 == "1"
это правда, но 1 === "1"
является false
В вашем примере $ var является переменной целочисленного типа, а 1 — константой целочисленного типа. На самом деле нет разницы типов. Константа не является типом в любом языке, это просто значение, которое является константой (неизменяемой). Константа может иметь тип integer, double, string и т. Д.
Полное объяснение различий доступно в ссылке на руководство по PHP: http://au.php.net/manual/en/language.operators.comparison.php
Других решений пока нет …