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 :

boucle for tableau mutimensionnel et indices conditionnés


Sujet :

Langage PHP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2019
    Messages : 45
    Par défaut boucle for tableau mutimensionnel et indices conditionnés
    Bonjour,

    J'ai un probleme sur lequel je m'arrache les cheveux depuis de longues heures. Voici mon probleme :

    J'ai un tableau array1 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    array:5 [0 => array:3 []
      1 => array:3 []
      2 => array:3 []
      3 => array:3 []
      4 => array:3 []
    ]
    Dans ce tableau j'ai d'autres tableaux composés de 3 tableaux chacun :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
     
    ^ array:5 [0 => array:3 ["linkElement" => array:5 [0 => "LinkElement1"
          1 => "LinkElement2"
          2 => "LinkElement3"
          3 => "LinkElement4"
          4 => "LinkElement5"
        ]
        "linkText" => array:5 [0 => "linkText1"
          1 => "linkText2"
          2 => "linktext3"
          3 => "linkText4"
          4 => "linkText5"
        ]
        "articleText" => array:5 [0 => " articletext1"
          1 => " articletext2"
          2 => " articletext3"
          3 => " articletext4"
          4 => " articletext5"
        ]
      ]
      1 => array:3 ["linkElement" => array:5 [0 => "LinkElement6"
          1 => "LinkElement7"
          2 => "LinkElement8"
          3 => "LinkElement9"
          4 => "LinkElement10"
        ]
        "linkText" => array:5 [0 => "linkText6"
          1 => "linkText7"
          2 => "linktext8"
          3 => "linkText9"
          4 => "linkText10"
        ]
        "articleText" => array:5 [0 => " articletext6"
          1 => " articletext7"
          2 => " articletext8"
          3 => " articletext9"
          4 => " articletext10"
        ]
      ]
      2 => array:3 ["linkElement" => array:5 [0 => "LinkElement11"
          1 => "LinkElement12"
          2 => "LinkElement13"
          3 => "LinkElement14"
          4 => "LinkElement15"
        ]
        "linkText" => array:5 [0 => "linkText11"
          1 => "linkText12"
          2 => "linktext13"
          3 => "linkText14"
          4 => "linkText15"
        ]
        "articleText" => array:5 [0 => " articletext11"
          1 => " articletext12"
          2 => " articletext13"
          3 => " articletext14"
          4 => " articletext15"
        ]
      ]
      3 => array:3 ["linkElement" => array:5 [0 => "LinkElement16"
          1 => "LinkElement17"
          2 => "LinkElement28"
          3 => "LinkElement19"
          4 => "LinkElement20"
        ]
        "linkText" => array:5 [0 => "linkText16"
          1 => "linkText17"
          2 => "linktext18"
          3 => "linkText19"
          4 => "linkText20"
        ]
        "articleText" => array:5 [0 => " articletext16"
          1 => " articletext17"
          2 => " articletext18"
          3 => " articletext19"
          4 => " articletext20"
        ]
      ]
      4 => array:3 ["linkElement" => array:5 [0 => "LinkElement21"
          1 => "LinkElement22"
          2 => "LinkElement23"
          3 => "LinkElement24"
          4 => "LinkElement25"
        ]
        "linkText" => array:5 [0 => "linkText21"
          1 => "linkText22"
          2 => "linktext23"
          3 => "linkText24"
          4 => "linkText25"
        ]
        "articleText" => array:5 [0 => " articletext21"
          1 => " articletext22"
          2 => " articletext23"
          3 => " articletext24"
          4 => " articletext25"
        ]
      ]
    ]
    Ce qui m'intéresse de faire de faire c'est de récupérer chaque élément de chaque clé ("LinkElement", "Linktext" et "articleText") pour initialiser des setters.
    Voici le code que j'ai construit pour essayer de faire ça, ça sera certainement plus parlant :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
     
    foreach($results as $result)
            {
     
                $article = new Liens();
     
                foreach($result as $k => $element)
                { 
     
                        if($k === "linkElement")
                        {
                            foreach($element as $article_element)
                            {
                                $article->setLinkElement($article_element;
                            }   
                        }
                        if($k === "linkText")
                        {
                            foreach($element as $article_element)
                            {
                                $article->setLinkText($article_element);
                            }   
                        }
                        if($k === 'articleText')
                        {
                            foreach($element as $article_element)
                            {
                                $article->setArticleText($article_element);
                            }   
                        }
                        $article->setCreatedAt(date('Y-m-d H:i:s'));
                        $article->setClubID("1");
                }
     
                $articles[] = $article;
    Ce code fonctionne apparemment bien, saut qu'il me renvoie un tableau uniquement des derniers objets instanciés alors que je voudrais tous les objets. Je devrai en avoir 25 objets alors que ce code m'en retourne que 5.
    Voici ce que j'obtiens:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     ^ array:5 [0 => App\Model\Liens {#4253 ▼
        +id: null
        +linkElement: "LinkElement5"
        +linkText: "LinkText5"
        +articleText: "articleText5"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
      1 => App\Model\Liens {#4241 ▼
        +id: null
        +linkElement: "LinkElement10"
        +linkText:"LinkText10"
        +articleText: "articleText10"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
      2 => App\Model\Liens {#957 ▼
        +id: null
        +linkElement: "LinkElement15
        +linkText:"LinkText15"
        +articleText: "articleText15"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
      3 => App\Model\Liens {#4235 ▼
        +id: null
        +linkElement: "LinkElement20"
        +linkText:"LinkText20"
        +articleText: "articleText20"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
      4 => App\Model\Liens {#4234 ▼
        +id: null
        +linkElement: "LinkElement25"
        +linkText:"LinkText25"
        +articleText: "articleText25"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
    ]
        }
    voici ce que je souhaite obtenir:
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
     
     ^ array:25 [0 => App\Model\Liens {#4253 ▼
        +id: null
        +linkElement: "LinkElement1"
        +linkText: "LinkText1"
        +articleText: "articleText1"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
      1 => App\Model\Liens {#4241 ▼
        +id: null
       +linkElement: "LinkElement2"
        +linkText: "LinkText2"
        +articleText: "articleText2"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
      2 => App\Model\Liens {#957 ▼
        +id: null
        +linkElement: "LinkElement3
        +linkText:"LinkText3"
        +articleText: "articleText3"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
      3 => App\Model\Liens {#4235 ▼
        +id: null
        +linkElement: "LinkElement4"
        +linkText:"LinkText4"
        +articleText: "articleText4"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
    [...]
      25=> App\Model\Liens {#4234 ▼
        +id: null
        +linkElement: "LinkElement25"
        +linkText:"LinkText25"
        +articleText: "articleText25"
        +created_at: "2020-02-09 10:41:05"
        +club_id: "1"
      }
    ]
    Merci pour votre aide

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    1- Mets un chapeau, ou une perruque.

    2- Montre-nous des "vrai" array PHP, qu'on peut TESTER.
    et/ou
    Mets des va_dump dans ton script, pour savoir ce qui est traité, ce que contient les variables,....


    A vue de nez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    foreach($results as $result)
    {
         foreach($result as $k => $r)
         { 
               $article = new Liens();
    Conseil : évite d'utiliser des variables comme $k, $r, $o,... qui ne veulent rien dire.
    Mets des noms plus "parlants" : ce sera plus simple à comprendre / déboguer.

  3. #3
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2019
    Messages : 45
    Par défaut
    J'avais déjà essayé ce que tu proposes et ce la me donne ce résultat :

    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
     
    ^ array:5 [0 => App\Model\Liens {#4269 ▼
        +id: null
        +linkElement: null
        +linkText: null
        +articleText: " Les couleurs bleus sont fragiles ▶"
        +created_at: "2020-02-09 10:07:39"
        +club_id: "1"
      }
      1 => App\Model\Liens {#4247 ▼
        +id: null
        +linkElement: null
        +linkText: null
        +articleText: "La vengeance est le courage des faibles"."
        +created_at: "2020-02-09 10:07:39"
        +club_id: "1"
      }
      2 => App\Model\Liens {#957 ▼
        +id: null
        +linkElement: null
        +linkText: null
        +articleText: "l'inutilité des pouvoirs publics bat son plein"
        +created_at: "2020-02-09 10:07:39"
        +club_id: "1"
      }
      3 => App\Model\Liens {#4237 ▼
        +id: null
        +linkElement: null
        +linkText: null
        +articleText: " Chaque fois que j'y pense je m'en dors"
        +created_at: "2020-02-09 10:07:39"
        +club_id: "1"
      }
      4 => App\Model\Liens {#4236 ▼
        +id: null
        +linkElement: null
        +linkText: null
        +articleText: " Les poètes sont les artistes de l'âme"
        +created_at: "2020-02-09 10:07:39"
        +club_id: "1"
      }
    ]
    Je reste qu'avec 5 instances et partiellement initialisées.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Toujours au pif, puisque tu ne donnes pas d'exemple d'array à traiter :
    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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    foreach($results as $result)
    {
    	foreach($result as $k => $element)
    	{ 
    		foreach($element as $article_element)
    		{
    			$article = new Liens();
    			if($k === "linkElement")
    			{
    				$article->setLinkElement($article_element;
    			}
    			elseif($k === "linkText")
    			{
    				$article->setLinkText($article_element);
    			}
    			elseif($k === 'articleText')
    			{
    				$article->setArticleText($article_element);
    			}   
    			$article->setCreatedAt(date('Y-m-d H:i:s'));
    			$article->setClubID("1");
     
    			$articles[] = $article;
    		}
    	}
    }

  5. #5
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2019
    Messages : 45
    Par défaut
    Cela donne me retourne le meme résultat que ton précédent message.

  6. #6
    Membre averti
    Femme Profil pro
    Développeur Web
    Inscrit en
    Septembre 2019
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur Web

    Informations forums :
    Inscription : Septembre 2019
    Messages : 45
    Par défaut
    Pour que cela soit plus parlant, j'ai modifié mon premier message avec ce que j'obtiens et ce que je souhaite obtenir.

    Merci de votre aide car je bloque complet. Je sais que je suis pas loin du résultat mais je n'arrive pas à obtenir mon tableau avec toutes les instances de mon objet.

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

Discussions similaires

  1. [Débutant] Boucle for en enlevant un indice.
    Par abel413 dans le forum MATLAB
    Réponses: 9
    Dernier message: 16/07/2013, 09h04
  2. Boucle for + tableau
    Par mick-67 dans le forum LabVIEW
    Réponses: 2
    Dernier message: 03/05/2011, 15h43
  3. la boucle for,pour juste certain indice
    Par Medoou dans le forum MATLAB
    Réponses: 2
    Dernier message: 12/07/2009, 14h45
  4. [VB.net] Boucle for next avec un tableau
    Par grand_prophete dans le forum Windows Forms
    Réponses: 4
    Dernier message: 31/05/2006, 11h08
  5. boucle for n fois pour n tableau...
    Par toyyo dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 22/08/2005, 16h01

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