Нубовский вопрос про if и присваение данных переменной
Я вот тут что-то затупил. Как правильно
1.
или
2.
if($val){
или
3.
как я понял, не проверял (пока не где, а руки чешутся), первое эквивалентно второму, а третье выполняется всегда, т.к. операция присваивания прошла успешно.
инструкция
Если я правильно понял о_О
А че, есть возможность, что присвоения не произойдет? Или в чем смысл такой проверки?
Так обычно и делаю. Но вот задумался... :)
А че, есть возможность, что присвоения не произойдет? Или в чем смысл такой проверки?
Ну я в общем, в тому-же написал "а третье выполняется всегда". А вот в С++ может быть ошибка)
Интересна логика)
В первом случае сложно будет выявить есть ли ошибка или нет, когда вместо сравнения вдруг появиться присвоение (забыли лишний знак =)
Третий случай эквивалентен первому.
$val=function();
if($val==function() || !empty($val) || isset($val) || function()==$val) {
}
($a==$b) != ($b==$a)
($a==$b) != ($b==$a)
Это называется некоммутативность. В общем случае зависит от типов данных $a и $b.
Поколупался...
Пока получилось только, что ($a==$b) != ($a===$b);
Делал так:
var_dump($a);
$b = "11";
var_dump($b);
if($a==$b) { echo "Good"; }
if($a===$b) { echo "Good"; }
Это как бы и кролику поятно...
Я о том, как вызвать исключение в тождествах, путем перемены мест тождеств, чтобы:
$a==$b - true
$b==$a - false
или
$a===$b - true
$b===$b - false
Или же приведенное условие недопустимо???
Заданный вопрос не имеет практического смысла... скорее головоломка..
В первом случае сложно будет выявить есть ли ошибка или нет, когда вместо сравнения вдруг появиться присвоение (забыли лишний знак =)
Третий случай эквивалентен первому.
Тот код который я написал правильный, и там стоит ПРИСВОИТЬ.
получается так:
1.
2.
3.
Alexander92, да вы правы)