php Variablen-Zuweisung innerhalb der if bedingte
Den folgenden zwei if
s produziert unterschiedliche Ergebnisse(erste if
echos hi, die zweite nicht), warum? warum nicht die variable Zuordnung auf $t
Arbeit? ist dies aufgrund $t
's im lokalen Bereich innerhalb der if
bedingte?
if(isset($_REQUEST["test"]) && $t=trim($_REQUEST["test"]) && !empty($t)){
echo 'hi'
}
if(isset($_REQUEST["test"]) && $t=trim($_REQUEST["test"])){
if(!empty($t))echo 'hi'
}
Du musst angemeldet sein, um einen Kommentar abzugeben.
&&
hat eine in der Rangfolge höher steht als=
, damit der erste Ausdruck wird ausgewertet, wie:Seit
!empty($t)
bewertet, bevor irgendetwas zugewiesen ist$t
, der Ausdruck istfalse
. Sie könnten dieses Problem beheben, indem das explizite setzen von Klammern oder durch die Verwendung einer weniger peinliche Art und Weise, es zu schreiben:trim($_REQUEST['test'])
bewerten zutrue
oderfalse
einfach von selbst, keineempty
notwendig. Wenn Sie wirklich brauchen, dietrim
med-Wert höher, können Sie es speichern, etwa so:Wenn Sie geringfügige änderungen, wie Sie diese in Ihrem code:
Dann beide
1: hi
und2: hi
gedruckt werden. Unterschied ist die Klammer um den ersten $t Zuordnung.