En PHP, if
n'a pas sa propre portée. Donc oui, si vous définissez quelque chose à l'intérieur de l'élément if
ou à l'intérieur du bloc, il sera disponible comme si vous l'aviez défini à l'extérieur (en supposant, bien sûr, que le code à l'intérieur du bloc ou de l'instruction if
s'exécute).
Pour illustrer :
if (true) { $a = 5; } var_dump($a == 5); // true
La condition est évaluée à true
pour que le code à l'intérieur du bloc soit exécuté. La variable $a
est défini.
if (false) { $b = 5; } var_dump(isset($b)); // false
La condition est évaluée à false
pour que le code à l'intérieur du bloc ne soit pas exécuté. La variable $b
ne sera pas défini.
if ($c = 5) { } var_dump($c == 5); // true
Le code à l'intérieur de la condition s'exécute et $c
est défini comme suit 5
( $c = 5
). Même si l'affectation se fait à l'intérieur de la if
la valeur survit à l'extérieur, car if
n'a pas de portée. La même chose se produit avec for
comme dans, par exemple, for ($i = 0, $i < 5; ++$i)
. Le site $i
survivra en dehors de la for
boucle, car for
n'a pas non plus de portée.
if (false && $d = 5) { } var_dump(isset($d)); // false
false
courts-circuits et l'exécution n'arrive pas à $d = 5
donc le $d
ne sera pas définie.
Pour en savoir plus sur le champ d'application de PHP, lisez le portée variable page du manuel.