Bonjour,
PHP 7
Dans la doc sur la structure if (expression) instruction, on voit que :
« ... et si l'expression vaut FALSE, l'instruction sera ignorée. »
Ceci est logique et conforme à à peu près tous les langages que j'ai étudiés, ... sauf que, dans le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<?php
if (array_key_exists("var", $GLOBALS)) echo "Oui";
else echo "Non";
?>
La variable $var n'étant pas définie, echo "Oui" est bien ignoré le code répond "Non", parfait, mais dans ce code ci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
 
<?php
if (array_key_exists("var", $GLOBALS)) $var = $GLOBALS['var'];
else echo "Non";
?>
La variable $var n'existe toujours pas et la commande d'assignation de $var" devrait être ignorée, non ?
Alors comment se fait-il que j'obtienne l'erreur suivante :
« PHP Notice: Undefined index: var in C:\inetsrv\wwwroot\test\testPHP.php on line 2 »
Pourquoi php cherche-t-il la variable $GLOBALS['var'] si l'expression du if retourne false ?

Même problème avec cette forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
<?php
$var = "truc";
$var = (array_key_exists("var", $GLOBALS) ? "var existe" : "var n'existe pas");
echo $var;
?>
Le code répond "var existe", ce qui est correct, mais pourquoi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
<?php
$var = (array_key_exists("var", $GLOBALS) ? "var existe" : "var n'existe pas");
echo $var;
?>
plante avec la même erreur ?