[PHP] Opérateurs logiques

Consultez la formation au référencement naturel Google de WebRankInfo / Ranking Metrics


dorian53
WRInaute accro
WRInaute accro
 
Messages: 1969
Inscription: Dim Avr 10, 2005 16:56

[PHP] Opérateurs logiques

Message le Jeu Nov 22, 2007 14:01

Bonjour,

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.


mowmow
WRInaute passionné
WRInaute passionné
 
Messages: 975
Inscription: Mer Nov 03, 2004 9:40

Message le Jeu Nov 22, 2007 14:16



Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Jeu Nov 22, 2007 14:30

and exécute le second test si le premier est vrai, et && exécute les deux dans tous les cas


narayana
WRInaute passionné
WRInaute passionné
 
Messages: 835
Inscription: Ven Jan 28, 2005 12:53

Re: [PHP] Opérateurs logiques

Message le Jeu Nov 22, 2007 14:43

dorian53 a écrit:
Code: Tout sélectionner
if (isset($var) and $var = 'test')
ou
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.

FloBaoti
WRInaute passionné
WRInaute passionné
 
Messages: 699
Inscription: Dim Avr 30, 2006 18:42

Message le Jeu Nov 22, 2007 15:53

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
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Jeu Nov 22, 2007 16:11

En fait cela dépend de la syntaxe:

// "&&" 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!


dorian53
WRInaute accro
WRInaute accro
 
Messages: 1969
Inscription: Dim Avr 10, 2005 16:56

Message le Jeu Nov 22, 2007 19:10

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.


julienr
WRInaute passionné
WRInaute passionné
 
Messages: 877
Inscription: Mar Aoû 05, 2003 14:49

Message le Ven Nov 23, 2007 14:35

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
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Ven Nov 23, 2007 15:07

C'était une citation du manuel PHP (dont le lien est donné plus haut).


dorian53
WRInaute accro
WRInaute accro
 
Messages: 1969
Inscription: Dim Avr 10, 2005 16:56

Message le Ven Nov 23, 2007 15:09

Justement je ne vois pas ce qui indique que les tests s'arretent à la première condition fausse.


Jeviensderio
WRInaute accro
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Ven Nov 23, 2007 18:38

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é
WRInaute impliqué
 
Messages: 394
Inscription: Ven Juin 15, 2007 12:55

Message le Ven Nov 23, 2007 19:50

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 :D )

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
WRInaute accro
 
Messages: 1340
Inscription: Ven Sep 29, 2006 12:50

Message le Sam Nov 24, 2007 12:38

Le petit programme que j'ai inséré donne la réponse exacte.
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.


julienr
WRInaute passionné
WRInaute passionné
 
Messages: 877
Inscription: Mar Aoû 05, 2003 14:49

Message le Sam Nov 24, 2007 12:58

sauf que je si je comprend bien le question initiale la test est plutôt :
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


dorian53
WRInaute accro
WRInaute accro
 
Messages: 1969
Inscription: Dim Avr 10, 2005 16:56

Message le Sam Nov 24, 2007 14:43

J'en suis perdu avec tous vos exemples.

La question est simple et s'illustre simplement avec l'exemple de mon 1er post.

[PHP] Opérateurs logiques

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 :



Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 0 invités