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 :

foreach as $key et => $val ? [PHP 5.3]


Sujet :

Langage PHP

  1. #1
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut foreach as $key et => $val ?
    Bonjour;
    J'ai tour petit souci, je réecris un script et transforme une boucle for en foreach...

    Voici le code original...

    [CODE]
    $tb .= "<tr".$this->getClassTag("tr").">\n";
    // for($i=0;$i<count($this->tbdesigner);$i++) {
    foreach ($this->data as $key => $value) {
    $tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$this->tbdesigner[$key]."</span></td>\n";
    }
    $tb .= "</tr>\n";
    [CODE]

    Mon souci est l'utilsation de => $value,$value qui n'est utilisé dans le code
    Si je le supprime; je n'ai rien d'affiché....
    J'ai pourtant relu la doc mais ne percute pas...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     The foreach construct provides an easy way to iterate over arrays. foreach works only on arrays and objects, and will issue an error when you try to use it on a variable with a different data type or an uninitialized variable. There are two syntaxes:
     
    foreach (array_expression as $value)
        statement
    foreach (array_expression as $key => $value)
        statement
     
    The first form loops over the array given by array_expression. On each iteration, the value of the current element is assigned to $value and the internal array pointer is advanced by one (so on the next iteration, you'll be looking at the next element).
     
    The second form will additionally assign the current element's key to the $key variable on each iteration.
    Ce n'est pas une question d'anglais mais... ne voit pas

    Merci de m'éclairer...

  2. #2
    Membre régulier Avatar de moogli
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 58
    Points : 102
    Points
    102
    Par défaut
    salut,


    plutôt

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <?php
    foreach ($this->tbdesigner as $key => $value) {
    $tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$value."</span></td>\n";
    ?>
    }
    $value représente ici la valeur de l’élément courant du tableau, et $key la clef

    donc dans le for tu utilisais $this->tbdesigner[$key] pur avoir la valeur, dans le foreach $value


    @+

  3. #3
    Débutant Avatar de ETVigan
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Avril 2010
    Messages
    660
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Gard (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Finance

    Informations forums :
    Inscription : Avril 2010
    Messages : 660
    Points : 170
    Points
    170
    Par défaut Correction utile...
    Merci pour le temps pris et votre coup de main...
    J'ai procédé à la modif, peut être mal compris mais cela ne donne pas le résultat souhaité.
    Voici le code original et ces résultats...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    			$tb .= "<tr".$this->getClassTag("tr").">\n";
    //			for($i=0;$i<count($this->tbdesigner);$i++)	{
    			foreach ($this->data as $key => $value) {
    //				$tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$this->tbdesigner[$key]."</span></td>\n";
    				$tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$this->tbdesigner[$key]."</span></td>\n";
    			}
    			$tb .= "</tr>\n";
    qui donne à l'écran, le bold est la ligne concernée !

    Je précise qu'il s'agit bien des résultats attendus

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Array
    Array
    Array
    Array
    Click Me to toggle
    Logo 	Col 1 	Col 2 	Col 3
    NEW 	Row1 Col1 	Row1 Col2 	Row1 Col3
    NEW 	Row2 Col1 	Row2 Col2 	Row2 Col3
    NEW 	Row3 Col1 	Row3 Col2 	Row3 Col3
    NEW 	This Software is 	under GPL 3 License. 	Daniele Monti - monska13 [at] gmail.com
    La même ligne avec $this->tbdesigner[$key] modifié par $value donne à l'écran...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Array
    Array
    Array
    Array
    Click Me to toggle
    Array 	Array 	Array 	Array
    NEW 	Row1 Col1 	Row1 Col2 	Row1 Col3
    NEW 	Row2 Col1 	Row2 Col2 	Row2 Col3
    NEW 	Row3 Col1 	Row3 Col2 	Row3 Col3
    NEW 	This Software is 	under GPL 3 License. 	Daniele Monti - monska13 [at] gmail.com
    Conscient qu'il est difficile de plonger ainsi dans un code...
    Je donne la source complète en pièce attachée avec autre souci en attente mais cela fera l'affaire d'un autre post..

    Je vous remercie pour tout conseil !

    --
    Dernière minute et une correction supplémentaire qui fait que cela fonctionne...

    Voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //			for($i=0;$i<count($this->tbdesigner);$i++)	{
    			foreach ($this->tbdesigner as $key => $value) {
    //				$tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$this->tbdesigner[$key]."</span></td>\n";
    				$tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$value."</span></td>\n";
    			}
    			$tb .= "</tr>\n";
    Fichiers attachés Fichiers attachés

  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
    Citation Envoyé par ETVigan Voir le message
    Dernière minute et une correction supplémentaire qui fait que cela fonctionne...
    Donc post résolu, non ?

  5. #5
    Membre régulier Avatar de moogli
    Profil pro
    Inscrit en
    Juin 2004
    Messages
    58
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2004
    Messages : 58
    Points : 102
    Points
    102
    Par défaut
    Citation Envoyé par ETVigan Voir le message
    Dernière minute et une correction supplémentaire qui fait que cela fonctionne...

    Voici
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    //			for($i=0;$i<count($this->tbdesigner);$i++)	{
    			foreach ($this->tbdesigner as $key => $value) {
    //				$tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$this->tbdesigner[$key]."</span></td>\n";
    				$tb .= "<td".$this->getClassTag("td")."><span".$this->getClassTag("tbdesigner").">".$value."</span></td>\n";
    			}
    			$tb .= "</tr>\n";
    ça me rappel mon code

    le premier paramètre du foreach est le tableau que l'on souhaite parcourir, dans les 1er exemple on ne sais d’où sort data

    @+

  6. #6
    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
    Citation Envoyé par moogli Voir le message
    ça me rappel mon code

    le premier paramètre du foreach est le tableau que l'on souhaite parcourir, dans les 1er exemple on ne sais d’où sort data

    @+
    Faire un helper pour la génération de table à partir d'un tableau (ou un objet Iterable) c'est une bonne idée, mais là le code est trop brouillon et je dirais même sale.

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

Discussions similaires

  1. foreach, $key, trim et saut de ligne récalcitrant
    Par olbouss dans le forum Langage
    Réponses: 5
    Dernier message: 22/07/2008, 16h38
  2. BDD, r-a-z index et indice primary key ?
    Par lord_paco dans le forum MS SQL Server
    Réponses: 9
    Dernier message: 11/07/2003, 10h24
  3. [Foreign Key] Besoin d'explication.
    Par Andry dans le forum Débuter
    Réponses: 4
    Dernier message: 28/05/2003, 11h34
  4. Déclenchement Programme sur Virtual Key
    Par Tom-G dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 09/05/2003, 12h58
  5. Virtual-key code
    Par lyrau dans le forum Windows
    Réponses: 2
    Dernier message: 29/03/2003, 19h22

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