Cela vient d'une question apparemment étrange :
if (print("1\n") && print("2\n") && print("3\n") && print("4\n")) { ; }
Qu'attendez-vous de ce code ?
En fait, le résultat est :
4 111
Souvent, nous ignorons que print est une construction grammaticale (constructions de langage), ce n'est pas une fonction et la liste des paramètres ne nécessite pas de parenthèses (même si vous écrivez des parenthèses, les parenthèses le seront également être ignoré lors de l'étape d'analyse syntaxique), c'est juste une "expression (expr)" qui renvoie toujours 1:
expr : T_PRINT expr | '(' expr ')' ; 所以其实上面的代码在php看来是: if (print ("1\n" && print ("2\n" && print ("3\n" && print "4\n")))) { ; }
Donc, sortie 4, puis sortie "3n" && print Le résultat est 1, puis sortie "2n" && 1, et enfin "1n" && 1
Et si nous voulons atteindre l'intention prévue du code ci-dessus, nous devrions écrire comme ceci :
if ((print "1\n") && (print "2\n") && (print "3\n") && (print "4\n")) { ; }
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!