Bonjour,
Je tombe souvent sur des expressions comme:
$Links = mysql_query($query_Links, $assembleur) or die(mysql_error());
(celle-ci est générée par Dreamweaver, mais on la retrouve dans
beaucoup d'exemples)
Je suppose, je suis même certain, que l'expression sera évaluée de
gauche à droite, avec arrêt de l'évaluation dès que le résultat est
connu (court-circuit) comme en C.
Ce qui m'embête, c'est que je ne trouve nulle part de document normatif
me garantissant ce comportement. J'utilise:
http://fr.php.net/manual/fr/index.php
J'ai mal cherché ? Y a-t-il un autre document ?
Merci d'avance
--
Pour répondre directement: enlever une lettre sur deux
wwaannaaddoooo -> wanadoo
[...] la syntaxe "or" ne fonctionne qu'avec "or die()", on ne peut pas par exemple écrire if($machin==1 or $bidule==4) Pourquoi ça ?
Parce que rien du tout, c'est même explicitement sur http://fr2.php.net/manual/en/language.operators.logical.php
Je me souviens d'avoir corrigé un gag dans un script en remplaçant l'instruction "or" par un test explicite, mais c'était quoi ? J'avais souvenir d'une parse error... "on" avait conclu à ce moment là (à tord donc) que or était réservé à "or die()". Etait-ce avec un appel de fonction ?? Je vais essayer de retrouver.
JG
Re,
[...] la syntaxe "or" ne fonctionne qu'avec "or die()", on ne
peut pas par exemple écrire if($machin==1 or $bidule==4)
Pourquoi ça ?
Parce que rien du tout, c'est même explicitement sur
http://fr2.php.net/manual/en/language.operators.logical.php
Je me souviens d'avoir corrigé un gag dans un script en remplaçant
l'instruction "or" par un test explicite, mais c'était quoi ? J'avais
souvenir d'une parse error... "on" avait conclu à ce moment là (à tord
donc) que or était réservé à "or die()". Etait-ce avec un appel de
fonction ?? Je vais essayer de retrouver.
[...] la syntaxe "or" ne fonctionne qu'avec "or die()", on ne peut pas par exemple écrire if($machin==1 or $bidule==4) Pourquoi ça ?
Parce que rien du tout, c'est même explicitement sur http://fr2.php.net/manual/en/language.operators.logical.php
Je me souviens d'avoir corrigé un gag dans un script en remplaçant l'instruction "or" par un test explicite, mais c'était quoi ? J'avais souvenir d'une parse error... "on" avait conclu à ce moment là (à tord donc) que or était réservé à "or die()". Etait-ce avec un appel de fonction ?? Je vais essayer de retrouver.
JG
Antoun
Je m'étais également posé la question quand j'ai découvert cette syntaxe. Je ne l'ai effectivement nulle part vue décrite explicitement, même si elle est abondamment utilisée dans les exemples.
Ceci dit, elle est une conséquence logique du modèle "orienté expression" et de la basse priorité du or : mysql_query(...) est une expression qui est vraie si elle réussit. Donc avec une écriture
Expr1 or Expr2
si Expr1 est vraie, il est inutile d'évaluer Expr2 puisque l'ensemble sera de toute façon vrai.
De la même manière, on peut utiliser and pour remplacer un if suivi d'une seule instruction :
mysql_query(...) and echo "requête réussie" ;
est l'équivalent de :
if (mysql_query(...) ) echo "requête réussie" ;
Ce n'est pas forcément une bonne idée, en particulier pour des questions de lisibilité...
Je m'étais également posé la question quand j'ai découvert cette
syntaxe. Je ne l'ai effectivement nulle part vue décrite explicitement,
même si elle est abondamment utilisée dans les exemples.
Ceci dit, elle est une conséquence logique du modèle "orienté
expression" et de la basse priorité du or : mysql_query(...) est une
expression qui est vraie si elle réussit. Donc avec une écriture
Expr1 or Expr2
si Expr1 est vraie, il est inutile d'évaluer Expr2 puisque l'ensemble
sera de toute façon vrai.
De la même manière, on peut utiliser and pour remplacer un if suivi
d'une seule instruction :
mysql_query(...) and echo "requête réussie" ;
est l'équivalent de :
if (mysql_query(...) ) echo "requête réussie" ;
Ce n'est pas forcément une bonne idée, en particulier pour des questions
de lisibilité...
Je m'étais également posé la question quand j'ai découvert cette syntaxe. Je ne l'ai effectivement nulle part vue décrite explicitement, même si elle est abondamment utilisée dans les exemples.
Ceci dit, elle est une conséquence logique du modèle "orienté expression" et de la basse priorité du or : mysql_query(...) est une expression qui est vraie si elle réussit. Donc avec une écriture
Expr1 or Expr2
si Expr1 est vraie, il est inutile d'évaluer Expr2 puisque l'ensemble sera de toute façon vrai.
De la même manière, on peut utiliser and pour remplacer un if suivi d'une seule instruction :
mysql_query(...) and echo "requête réussie" ;
est l'équivalent de :
if (mysql_query(...) ) echo "requête réussie" ;
Ce n'est pas forcément une bonne idée, en particulier pour des questions de lisibilité...