IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Différences entre && et "and" [PHP 5.2]


Sujet :

Langage PHP

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut Différences entre && et "and"
    Bonjour,

    Je suis tombé sur le cours qui indique que :
    - les && et || sont plus prioritaires que les "and" et "or"
    (voir : http://php.developpez.com/faq/?page=...difference-and)

    Cependant, j'ai cru noter une autre différence et je souhaiterais que quelqu'un confirme ou infirme, afin de ne pas rester éventuellement dans le faux.

    J'ai une conditionnelle de la forme :
    - soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($sort = $request->getParameter('sort') && $this->isValidSortColumn($sort))
    - ou bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if ($sort = $request->getParameter('sort') and $this->isValidSortColumn($sort))
    La première conditionnelle me génère une erreur :
    Notice: Undefined variable: sort
    alors que la seconde passe et donc initialise $sort lors de l'évaluation du membre gauche du "and" avant de passer à l'évaluation du membre droit.

    Ce comportement est-il vraiment spécifique aux "and / or" par rapport aux "&& / ||", ou bien ais-je manqué quelque chose ?

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    C'est une question de priorité puisque :
    && > = > and

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $sort = ($request->getParameter('sort') && $this->isValidSortColumn($sort))
    && prioritaire à l'affectation (d'où $sort inexistante à l'appel de la méthode isValidSortColumn si elle n'a pas été définie avant).

    Différent de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ($sort = $request->getParameter('sort')) and $this->isValidSortColumn($sort)
    Affectation prioritaire à and.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2004
    Messages
    396
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2004
    Messages : 396
    Points : 396
    Points
    396
    Par défaut
    Ok, le && est aussi prioritaire sur le =, c'est tout simple mais c'est à savoir !!

    J'utilisais jusque là indifféremment les && et "and".
    Ça va très certainement m'éviter quelques bugs tôt ou tard, merci

  4. #4
    Expert confirmé
    Avatar de Doksuri
    Profil pro
    Développeur Web
    Inscrit en
    Juin 2006
    Messages
    2 452
    Détails du profil
    Informations personnelles :
    Âge : 54
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 452
    Points : 4 601
    Points
    4 601
    Par défaut
    Citation Envoyé par bilbonec Voir le message
    J'utilisais jusque là indifféremment les && et "and".
    moi aussi.... zut alors... merci bien pour l'info !
    La forme des pyramides prouve que l'Homme a toujours tendance a en faire de moins en moins.

    Venez discuter sur le Chat de Développez !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Différence entre %STR et %QUOTE
    Par fafabzh6 dans le forum Macro
    Réponses: 10
    Dernier message: 14/03/2011, 17h43
  2. Réponses: 7
    Dernier message: 27/02/2008, 13h55

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo