Parceque c'est comme ça !
D'abord, "or" est un opérateur logique : il retourne toujours un boolean, dans tous les cas
Code :
- var_dump(12 or 24); // boolean true
- return machin() or truc(); // retournera toujours un boolean
|
Mais alors pourquoi une syntaxe comme "mysql_bidule() or die()" ça fonctionne ? Parceque les opérateurs logique s'arretent dès que la condition est vérifiée (je sais plus comment ça s'appelle ça). En gros, si mysql_bidule() retourne vrai, ça sert à rien de tester la suite puisque de toutes façons, que ça soit vrai ou faux, ça retournera vrai. Par contre si mysql_bidule() est faux, alors on passe à l'autre partie.
Ensuite, pour la deuxième syntaxe, c'est une question d'ordre de priorité des opérateurs en PHP ( voir http://www.php.net/manual/fr/langu [...] precedence ). En gros l'opérateur "=" est prioritaire sur "or". Donc :
Code :
- $a = 12 or 24; // equivaut à ($a = 12) or 24;
- var_dump($a); // int 12
|
mais
Code :
- $a = (12 or 24);
- var_dump($a); // boolean true
|
Voila voila
---------------
When it's from Finland it's good. - Mon blog