J'ai une question intéressante sur la façon dont PHP évalue les expressions booléennes. Lorsque vous avez, par exemple,Comment puis-je éviter PHP éviter évaluation paresseux?
$expression = $expression1 and $expression2;
ou
if ($expression1 and $expression2)
PHP vérifie d'abord si $expression1
est évaluée à true
. Si ce n'est pas le cas, alors $expression2
est simplement ignoré pour éviter des calculs inutiles. Dans un scénario que je vous écris, j'ai:
if ($validator->valid("title") and $validator->valid("text"))
je dois avoir la deuxième déclaration ($validator->valid("text")
) évaluée, même si la première est évaluée à false. Je voudrais vous demander s'il existe un moyen facile de forcer PHP à toujours évaluer les deux instructions. Je vous remercie!
C'est très imprudent. Que faire si le premier renvoie vrai, et le dernier renvoie 2. vrai et 2 font faux! De plus, un responsable viendra probablement dire "whoops, ça devrait être &&, pas &", en brisant le code. http://stackoverflow.com/questions/710919/how-can-i-have-php-avoid-lazy-evaluation/710936#710936 est une réponse beaucoup plus sûre et plus claire. –
Je suis parfaitement au courant des limitations, avez-vous même lu ma réponse? –
@Paolo Bergantino: Je l'ai fait. Je voulais souligner que cela ne devrait pas être choisi comme la bonne réponse, aussi intelligent soit-il (enfin, c'est vraiment trop intelligent). –