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 :

Optimisation Unused variable sur foreach


Sujet :

Langage PHP

  1. #1
    Invité
    Invité(e)
    Par défaut Optimisation Unused variable sur foreach
    Bonjour à tous !

    Je souhaite résoudre mes problèmes d'optimisations suite à un parse d'analyse de mon code via un PHP CodeSniffer qui indique si votre code respecte les "standards" de php.

    Il apparaît une proposition d'optimisation assez agaçante. Je vous place le contexte :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    $variable = array(
       'truc' => array(
           'otherkey1' => 'value a',
           'otherkey2' => 'value b',
       ),
       'machin' => array(
           'otherkey1' => 'value c',
           'otherkey2' => 'value d',
       ),
    );
     
    foreach ($variable as $key => $value) {
       echo $value['otherkey1'];
    }
    Ceci me permet de parcourir rapidement un tableau multidimensionnel, et d'accéder en direct au contenu souhaité grâce à $value .

    Hors, l'optimisation m'indique une 'erreur' :
    Unused variable $key.
    Ce qui est effectivement vrai.
    Alors je me suis penché pour savoir comment résoudre cette optimisation, tout en sachant que je ne comprends pas pourquoi PHP propose cette possibilité d'accès direct au contenu, et vous le reprocher après.

    Je me suis dit alors de revoir chacun de mes foreach :

    soit : qui me ferait faire trop de modification dans mes foreach complexes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    foreach (array_keys($variable) as $key) {
       echo $variable[$key]['otherkey1'];
    }
    soit : que je trouve pas très 'intelligent'
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($variable as $key => $value) {
       $key=$key;
       echo $value['otherkey1'];
    }
    soit : que je ne trouve pas très 'intelligent' et qui devra m'imposera encore plus de modifications
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach ($variable as $key => $value) {
        $value=$value;
        echo $variable[$key]['otherkey1'];
    }
    ou soit : qui me fera le moins de changements compte tenu de la complexité réelle de certain foreach :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    foreach (array_keys($variable) as $key) {
        $value=$variable[$key];
        echo $value['otherkey1'];
    }
    Certains m'ont aussi émit l'hypothèse suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    foreach (array_keys($variable) as $key) {
        foreach (array_keys($variable[$key]) as $value) {
            echo $value['otherkey1'];
        }
    }
    Je ne sais pas si certains ont été confronté à ça, mais en gros, le php codesniffer m'invite à améliorer un code qui me semble déjà plus logique que les solutions alternatives conventionnelles.

    Est-ce que quelqu'un a un avis pour avoir une meilleure solution ?
    Merci

    Cordialement

  2. #2
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Ce que te dis le message, c'est juste que t'as pas besoin de $key, pas de changer de méthode.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    foreach ($variable as $value) { ... }
    est dans ton cas largement suffisant.
    Pas de question technique par MP !
    Tout le monde peut participer à developpez.com, vous avez une idée, contactez-moi !
    Mes formations video2brain : La formation complète sur JavaScriptJavaScript et le DOM par la pratiquePHP 5 et MySQL : les fondamentaux
    Mon livre sur jQuery
    Module Firefox / Chrome d'intégration de JSFiddle et CodePen sur le forum

  3. #3
    Invité
    Invité(e)
    Par défaut
    Oui, effectivement

    Merci

    En fait ce qui m'a induit en erreur c'est le fait de penser que l'index du tableau multidimension pouvait être autre chose qu'un index numérique.

    Et comme j'utilise souvent des index de type string, je n'ai même pas chercher à savoir si ça fonctionnait, puisque j'ai avancer tout mon projet avec le foreach complet $key + $value à chaque fois :/

    J'ai plus qu'à remettre en ordre tout ça et passer tous mes foreach au nettoyage !

    :p

    A+

  4. #4
    Membre émérite

    Profil pro
    Inscrit en
    Mai 2008
    Messages
    1 576
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 1 576
    Points : 2 440
    Points
    2 440
    Par défaut
    Ne te torture pas trop sur l'optimisation du code. Les principaux goulots d'étranglement sont en général le débit du serveur, la vitesse du disque, la structure de la base de données (et le code qui manipule la base de données). Le reste n'a vraiment pas de conséquence pratique (à moins que ton site soit Facebook ou Wikipedia).

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 06/02/2013, 13h39
  2. Réponses: 5
    Dernier message: 11/08/2011, 09h08
  3. Experts Mysql : Optimiser une requete sur codes postaux
    Par El Riiico dans le forum Requêtes
    Réponses: 6
    Dernier message: 20/01/2006, 18h00
  4. Réponses: 2
    Dernier message: 29/08/2005, 16h12
  5. Utilisation d'une variable sur plusieurs unités
    Par Yamaneko dans le forum Langage
    Réponses: 2
    Dernier message: 05/06/2003, 11h23

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