[PHP] Opérateurs logiques
16 messages • Page 1 sur 2 • 1, 2
Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics
[PHP] Opérateurs logiques
Bonjour,
Existe t-il une différence entre and, &&, or et || sur la longueur du test dans la condition ?
Ces 2 conditions s'executent-elles de la même façon ?
Y a t-il un test court et un test long ?
(Car sans test court ce n'est sémantiquement pas correct)
Merci.
Edit ==
Existe t-il une différence entre and, &&, or et || sur la longueur du test dans la condition ?
- Code: Tout sélectionner
if (isset($var) and $var == 'test')
- Code: Tout sélectionner
if (isset($var) && $var == 'test')
Ces 2 conditions s'executent-elles de la même façon ?
Y a t-il un test court et un test long ?
(Car sans test court ce n'est sémantiquement pas correct)
Merci.
Edit ==
Dernière édition par dorian53 le Jeu Nov 22, 2007 19:07, édité 2 fois.
-

Jeviensderio - WRInaute accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
and exécute le second test si le premier est vrai, et && exécute les deux dans tous les cas
Re: [PHP] Opérateurs logiques
dorian53 a écrit:ou
- Code: Tout sélectionner
if (isset($var) and $var = 'test')
- Code: Tout sélectionner
if (isset($var) && $var = 'test')
De plus vous allez affecter la valeur 'test' à la variable $var. Je ne pense pas que ce soit le but recherché.
Ne serait pas plutôt cela
- Code: Tout sélectionner
if (isset($var) and $var == 'test')
ou encore
- Code: Tout sélectionner
if (isset($var) and strcmp('test',$var) == 0)
Cordialement.
Jeviensderio a écrit:and exécute le second test si le premier est vrai, et && exécute les deux dans tous les cas
Selon la doc, ces 2 opérateurs sont identiques et ils n'exécutent la seconde condition que si la première est vraie...
Ca correspond à un "ET ALORS" dans certains langages...
-

Jeviensderio - WRInaute accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
En fait cela dépend de la syntaxe:
Si on rajoute des parenthèses, les opérateurs sont pareils:
On écrit verra d'ailleurs!
// "&&" a une précédence supérieure à "and"
$g = true && false; // $g se vera assigner à (true && false), ce qui est false
$h = true and false; // $h se vera assigner à true
Si on rajoute des parenthèses, les opérateurs sont pareils:
<?php
$h = true and false; // $h se vera assigner à true
echo "1) ", $h, "\n";
$h = (true and false);
echo "2) ", $h, "\n";
?>
On écrit verra d'ailleurs!
FloBaoti a écrit:Jeviensderio a écrit:and exécute le second test si le premier est vrai, et && exécute les deux dans tous les cas
Selon la doc, ces 2 opérateurs sont identiques et ils n'exécutent la seconde condition que si la première est vraie...
Ca correspond à un "ET ALORS" dans certains langages...
Merci pour vos réponses, c'est vraiment ce point qui m'intéressait.
Ce serait donc visiblement des "testes courts", mais je n'ai pas trouvé cette information dans la doc.
Jeviensderio a écrit:// "&&" a une précédence supérieure à "and"
$g = true && false; // $g se vera assigner à (true && false), ce qui est false
$h = true and false; // $h se vera assigner à true
je dirais plutot que 'and' à une précédence inférieur à '=' et par là même que '&&' est plus fort que '='
'&&' > '=' > 'and'
-

Jeviensderio - WRInaute accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
C'était une citation du manuel PHP (dont le lien est donné plus haut).
-

Jeviensderio - WRInaute accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
julienr a écrit:
je dirais plutot que 'and' à une précédence inférieur à '=' et par là même que '&&' est plus fort que '='
'&&' > '=' > 'and'
Oui.
-

erestrebian - WRInaute impliqué

- Messages: 394
- Inscription: Ven Juin 15, 2007 12:55
Jeviensderio a écrit:and exécute le second test si le premier est vrai, et && exécute les deux dans tous les cas
Il me semble justement que si la première partie est fausse && ne cherche même pas à savoir si la seconde partie est vraie...
style
$b=1;
if ((isset($a))&&($a=$b)) $a ne prendra pas la valeur de $b s'il n'existe pas auparavant
Alors que and execute les deux tests. (peut-être simplement une rédaction trop rapide
Pour choisir entre or et ||, il s'agit de la même chose or testera les deux itérations alors que || ne testera la seconde que si la première est fausse.
-

Jeviensderio - WRInaute accro

- Messages: 1340
- Inscription: Ven Sep 29, 2006 12:50
Le petit programme que j'ai inséré donne la réponse exacte.
Je le mets encore:
On voit que les deux conditions sont testées à la fois.
Je le mets encore:
<?php
$h = true and false; // $h se vera assigner à true
echo "1) ", $h, "\n";
$h = (true and false);
echo "2) ", $h, "\n";
?>
On voit que les deux conditions sont testées à la fois.
sauf que je si je comprend bien le question initiale la test est plutôt :
qii doit donner false dans les deux cas
- Code: Tout sélectionner
<?php
$h = (true and false); // $h se vera assigner à true
echo "1) ", $h, "\n";
$h = (true && false);
echo "2) ", $h, "\n";
?>
qii doit donner false dans les deux cas
16 messages • Page 1 sur 2 • 1, 2
Formation recommandée sur ce thème :
Formation Référencement naturel Google : apprenez une méthode efficace pour optimiser à fond le référencement naturel dans Google de façon durable... Formation animée par Olivier Duffez et Fabien Facériès, experts en référencement naturel.
Tous les détails sur le site Ranking Metrics : programme, prix, dates et lieux, inscription en ligne.
Lectures recommandées sur ce thème :
- Microsoft désactive les opérateurs link: et linkdomain:
- Opérateurs de recherche avancée sur MSN
- 5 fans de VTT chez Google lancent le blog Google Earthlings
- Google rachète Zingku (service de networking pour mobile)
- Google Patents : moteur de recherche de brevets
- Google Suggest
- Facebook recrute Sheryl Sandberg, ancienne dirigeante de Google
- Les enjeux juridiques du Web 2.0 : quelques réflexions...
- Recherche de backlinks : différence entre site: et link:
- Les commandes site:, link: et linkdomain: sur Google et Yahoo
- les opérateurs yahoo
- Opérateurs cachés Google
- Opérateurs Google et analyse du référencement
- Amende pour des opérateurs ...
- Opérateurs de Paiement // une solution correcte ?
- Test des divers opérateurs de micropaiement ?
- Opérateurs de recherche avancée sur MSN Search
- [Chat] Vote pour les nouveaux opérateurs
- probleme entre index.php centre.php et news.php
Qui est en ligne
Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités





le forum