=== vs ==

Redjik

Джедай-мастер
Заметил за собой такое поведение...
Возьму на примере сферического коня в вакууме...

PHP:
if ((int)$var === 2)
{
   doSmth();
}
Я практически перестал использовать ==
Для меня это хорошо, я точно знаю какие данные проверяю, но вот не уверен, что это хорошо в плане читаемости.
Все же код надо писать для людей.
 

Adelf

Administrator
Команда форума
Redjik
меняй язык уже :) Явы с дотнетами с удовольствием примут тебя
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
на читаемость это никак не влияет, разницы if ((int)$x === 0) с if (!$var) не вижу
 

Absinthe

жожо
на читаемость это никак не влияет, разницы с if ($var) не вижу
А мне кажется, что влияют. И разницу в читаемости вижу. И она не в пользу варианта Redjik: читая такой код, жду подвоха.
 

Redjik

Джедай-мастер
Некорректный пример привел
поменял
PHP:
(int)$var === 0
на
PHP:
(int)$var === 2
в идеале вместо 2 - константа с каким-нибудь статусом

а так, да или if ($var) или if(!empty($var)) - преимущественно для массивов использую ... или жесткую проверку...
 

AmdY

Пью пиво
Команда форума
>>if ((int)$var === 2)
это часто порождает ошибки
PHP:
if ((int)$var === 2) {
   $var++; // забыли что приводили к нужному типу
}

// правильнее делать так
$var = (int)$var;
if ($var === 2) {
   $var++; // здесь уже правильный тип
}
 

С.

Продвинутый новичок
PHP:
// правильнее делать так
$var = (int)$var;
if ($var === 2) {
   $var++; // здесь уже правильный тип
}
PHP:
// а еще правильнее делать так
if ($var == 2) {
   $var++;
}
И не трахать никому мозги. 21-век на дворе, надо пользоваться его преимуществами. Если можно написать чистую суть кода, без шелухи, то нужно так и делать.
 

damner2

Новичок
Redjik
2. в первом примере === лишнее.
Отсутствие приведение типа может быть лишнем? Нада ж понимать, что == операция сложнее (делает больше), чем ===.

PHP:
// а еще правильнее делать так
if ($var == 2) {
   $var++;
}
И не трахать никому мозги. 21-век на дворе, надо пользоваться его преимуществами. Если можно написать чистую суть кода, без шелухи, то нужно так и делать.
Аха, а потом, удивляться, почему в 21 веке
PHP:
in_array($_GET['number'], array(0, 1, 2))
всегда верно, когда передаётся набор букв.
 
  • Like
Реакции: AmdY

AmdY

Пью пиво
Команда форума
Redjik
собственно, в первом примере масло масленное, нужно использовать ЛИБО приведение, ЛИБО сравнение с учётом типа.
 

Фанат

oncle terrible
Команда форума
Redjik
собственно, в первом примере масло масленное, нужно использовать ЛИБО приведение, ЛИБО сравнение с учётом типа.
Строго говоря, замены не равнозначные.
сравнение с приведением даст положительный результат, в то время как сравнение с учётом типа - отрицательный.

Так что в итоге получается, что сравнивать желательно с приведением, но третий знак "равно" будет тогда лишним.
 

Фанат

oncle terrible
Команда форума
окей, пусть будет сформулировано, как "сравнивать, предварительно приведя"
 
Сверху