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 :

parcours d'un tableau par foreach mais action particulière sur une colonne


Sujet :

Langage PHP

  1. #1
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut parcours d'un tableau par foreach mais action particulière sur une colonne
    Bonjour,
    désolé pour le titre non concis mais j'ai pas trouvé plus court.

    Mon souci est que mon code parcourt les éléments d'un tableau avec un foreach mais je voudrais ajouter un traitement particulier sur une colonne. La seule chose à laquelle j'ai pensé est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    foreach ($valTickets as $line)
    {
        echo "<tr>";
        foreach ($line as $cellLine)
        {
            if ($cellLine=="xxx") {echo "<td>"; traitement particulier; echo "</td>";}
            else
                echo "<td>" . $cellLine . "</td>";
        }
        echo "</tr>";
    }
    c'est bon ou y a mieux ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    salut,

    c'est bien mais la manière d'écrire ton code laisse vraiment à désirer : tu dois être hyper rigoureux et constant. Suis les règles PSR sans te poser de questions, elles ont été conçues par des développeurs aguerris et font consensus.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    foreach ($valTickets as $line) {
        echo '<tr>';
        foreach ($line as $cellLine) {
            echo '<td>';
            if ($cellLine=="xxx") {
                echo traitement particulier;
            } else {
                echo $cellLine;
            }
            echo '</td>';
        }
        echo '</tr>';
    }
    Pense quand même à bien échapper toutes les données.

  3. #3
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    OK,
    je me suis d'abord demandé ce qu'étaient les règles PSR, puis en lisant ton code (le mien reformatté), j'ai compris et https://php.developpez.com/tutoriels...e/?page=normes.
    En fait mon code initial était bien formatté mais c'est juste en écrivant ce post que c'est devenu mauvais.
    J'ai repris mon code mal formatté et ai utilisé la commande "code->reformat code" de PHPStorm (que je vais acheter car je suis convaincu), mais le résultat est de travers
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    foreach ($valTickets as $line) {
        echo "<tr>";
        foreach ($line as $cellLine) {
            if ($cellLine == "xxx") {
                echo "<td>";
                traitement particulier; echo "</td>";} else
                echo "<td>" . $cellLine . "</td>";
        }
        echo "</tr>";
    }
    Cet outil de PHPStorm n'est pas valable ?

  4. #4
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    si c'est valable et c'est entièrement paramétrable :
    File > Settings > Editor > Code Style > PHP
    Et là c'est la fête au village.

  5. #5
    Membre actif Avatar de Trehinos
    Homme Profil pro
    Analyste développeur PHP
    Inscrit en
    Novembre 2012
    Messages
    100
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Analyste développeur PHP
    Secteur : Distribution

    Informations forums :
    Inscription : Novembre 2012
    Messages : 100
    Points : 232
    Points
    232
    Par défaut
    Le if est la bonne façon de vérifier qu'on est dans la bonne colonne. Pensez à l'écriture foreach($row as $colName => $colValue) si $row est une ligne de résultat d'une requête BDD (ou un tableau associatif).

    Si vous voulez modifier la valeur du tableau, on peut aussi travailler directement avec la référence de l'élément plutôt qu'une copie : foreach($row as &$colValue).

    Pour PhpStorm : CTRL + ALT + L
    Je crois que j'utilise ce raccourci encore plus souvent que CTRL + S ^^

  6. #6
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Je peux certes améliorer les choses en modifiant les settings, mais y a un truc que j'ai pas trouvé :
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    foreach ($valTickets as $line)
    {
        echo "<tr>";
        foreach ($line as $cellLine)
        {
            if ($cellLine == "xxx")
            {
                echo "<td>";
                traitement particulier; echo "</td>";}
            else
            {
                echo "<td>" . $cellLine . "</td>";
            }
        }
        echo "</tr>";
    }
    echo "</tr>";
    }
    Comment faire que la } de la ligne 10 soit renvoyée à la ligne suivante ?

  7. #7
    Expert confirmé
    Avatar de laurentSc
    Homme Profil pro
    Webmaster débutant perpétuel !
    Inscrit en
    Octobre 2006
    Messages
    10 470
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Webmaster débutant perpétuel !
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2006
    Messages : 10 470
    Points : 5 831
    Points
    5 831
    Billets dans le blog
    1
    Par défaut
    Merci Trehinos du conseil sur l'écriture du foreach. Du coup, j'ai écrit
    Code php : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    foreach ($valTickets as $line)
    {
        echo "<tr>";
        foreach ($line as $colName=>$cellLine)
        {
            if ($colName == "id_Ticket")
            {
                echo "<td><a href=''>" . $cellLine . "</a></td>";
            }
            else
            {
                echo "<td>" . $cellLine . "</td>";
            }
        }
        echo "</tr>";
    }
    alors que j'étais parti sur un compteur de lignes (évidemment le href vide de la ligne 9, c'est du provisoire)

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

Discussions similaires

  1. [SSIS]Foreach loop container basé sur une table
    Par romu92 dans le forum SSIS
    Réponses: 5
    Dernier message: 22/01/2009, 07h47
  2. Réponses: 7
    Dernier message: 03/04/2008, 11h33
  3. [Tableaux] Filtrer le parcours d'un tableau avec foreach
    Par Hotfirenet dans le forum Langage
    Réponses: 5
    Dernier message: 27/02/2008, 11h34
  4. Réponses: 3
    Dernier message: 10/07/2007, 13h53
  5. Enregistrer les actions effectuée sur une fenêtre
    Par netomax dans le forum WinDev
    Réponses: 5
    Dernier message: 25/04/2007, 21h11

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