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 :

Affectations pendant un if [PHP 7]


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre très actif

    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 289
    Par défaut Affectations pendant un if
    Bonjour, en fait je voudrais optimiser au max mon code, et voudrais savoir s'il est possible de faire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    si (a ← b) ou (c ← d)
    sachant que b et d sont déterminants pour exécuter la suite, et sont booléens. Je souhaite que l'affectation soit faite pour a et b en même temps quel que soit le résultat. J'ai essayé mais ça n'a pas marché avec ||, je n'ai pas essayé avec un simple or. S'il y a une instruction ou manière de faire spécifique je suis preneur.
    Terminées les prises de tête pour programmer en php. On procède comme ça : http://cavril.developpez.com/php/ (débutants pressés voulant éviter d'approfondir vers la POO)

  2. #2
    Modérateur
    Avatar de Bisûnûrs
    Profil pro
    Développeur Web
    Inscrit en
    Janvier 2004
    Messages
    9 931
    Détails du profil
    Informations personnelles :
    Âge : 42
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Janvier 2004
    Messages : 9 931
    Par défaut
    Hello,

    Optimiser n'est pas réduire au maximum le nombre de lignes de code, mais améliorer les performances. Réduire le nombre de lignes de code par des syntaxes alambiquées est contre productif et difficilement maintenable pour toi dans quelques mois/années et tes collègues qui voudront savoir ce que produit le code.

  3. #3
    Expert confirmé Avatar de CosmoKnacki
    Homme Profil pro
    Justicier interdimensionnel
    Inscrit en
    Mars 2009
    Messages
    3 015
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Justicier interdimensionnel

    Informations forums :
    Inscription : Mars 2009
    Messages : 3 015
    Par défaut
    Je suis d'accord avec Bisûnûrs, c'est pas avec ça que tu vas optimiser ton code.

    Par contre, acquérir une bonne connaissance de la priorité des opérateurs n'est pas une mauvaise chose.

    L'ordre de priorité des opérateurs en question est (par priorité décroissante): || > = > or.
    En plus de cela, il faut prendre en compte leur associativité:
    • à gauche pour || et or
    • à droite pour =


    $a = $b || $c = $d sera évalué comme: $a = ($b || ($c = $d)).
    $a = $b or $c = $d sera évalué comme: ($a = $b) or ($c = $d).

    Avoir une affectation dans un if, ça reste assez commun, par exemple if (false !== $handle = fopen('fichier', 'r')) est une écriture courante. Avoir plusieurs opérateurs dans une expression aussi.
    Mais évite de transformer ton code en Code Golf. Ceci dit, c'est un très bon exercice à pratiquer dans une sandbox pour maîtriser la priorité des opérateurs.

  4. #4
    Membre très actif

    Homme Profil pro
    Développeur Web
    Inscrit en
    Août 2010
    Messages
    289
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Août 2010
    Messages : 289
    Par défaut
    Citation Envoyé par Bisûnûrs Voir le message
    Hello,

    Optimiser n'est pas réduire au maximum le nombre de lignes de code, mais améliorer les performances. Réduire le nombre de lignes de code par des syntaxes alambiquées est contre productif et difficilement maintenable pour toi dans quelques mois/années et tes collègues qui voudront savoir ce que produit le code.
    Certes, aussi le terme de factoriser est à préférer ici.

    Citation Envoyé par CosmoKnacki Voir le message
    $a = $b or $c = $d sera évalué comme: ($a = $b) or ($c = $d).
    Ok merci pour ces infos. En tout état de cause, je ne pouvais pas avoir ce que je voulais au départ. J'aurais peut être dû mettre le code d'origine l'ayant modifié depuis.

    À savoir que dans ce cas : https://onlinephp.io/c/2cdbd, i.e. si on avait utilisé &&, l'affectation ne se serait pas faite pour $c.

    https://onlinephp.io/c/0eee2
    Terminées les prises de tête pour programmer en php. On procède comme ça : http://cavril.developpez.com/php/ (débutants pressés voulant éviter d'approfondir vers la POO)

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

Discussions similaires

  1. Affectation d'une valeur à une variable pendant x secondes
    Par teddol dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 12/06/2017, 00h49
  2. Affectation d'une variable pendant le debuggage
    Par new_wave dans le forum Eclipse Java
    Réponses: 2
    Dernier message: 08/06/2010, 10h46
  3. Affecter un attribut dans un fichier XML ou XSL
    Par LLaurent dans le forum XMLRAD
    Réponses: 7
    Dernier message: 05/06/2003, 15h04
  4. Rafraichissement de la fenetre pendant le traitement
    Par Bobx dans le forum Composants VCL
    Réponses: 5
    Dernier message: 20/02/2003, 16h13
  5. [MaskEditBox] Affecter avec un réel
    Par fikou dans le forum Général VBA
    Réponses: 6
    Dernier message: 16/09/2002, 10h28

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