[RESOLU] Boucle for dans chaîne echo

Chris32
Invité n'ayant pas de compte PHPfrance

03 nov. 2016, 23:33

Bonjour à tous et toutes. J'ai un problème de syntaxe (ou un problème de php tout court).
J'ai 1 table avec A B C et 1 table avec 1 2. Mon souhait est d'obtenir cette combinaison :
A1
A2
B1
B2
C1
C2
D1
D2
J'ai tenté de faire 2 boucles for l'une dans l'autre, elle fonctionne bien (voici le code utilisé) :
for($i=1; $i<=1; $i++) {
echo $data['Noms1'],
'for($j=1; $j<=1; $j++) {',
$data['Noms2'],
'}',
'<br/>';
}
mais il y a un problème à l'affichage :
Afor($j=1; $j<=1; $j++) {1}
Afor($j=1; $j<=1; $j++) {2}
B($j=1; $j<=1; $j++) {1}
... etc.

Puis-je obtenir un éclairage sur la syntaxe exacte sur ce code et sa faisabilité.
Merci d'avance.

Petit nouveau ! | 9 Messages

04 nov. 2016, 00:07

Bonsoir,

Le problème ici est surtout au niveau de l'algorithme.

Tu as 2 tableaux: [A, B, C] et [1, 2] (à toi d'adapter comment tu obtient les valeurs). Tu souhaites avoir un résultat du type A1 A2 B1 B2 ...

Tu as besoin de deux notions, savoir parcourir un tableau et savoir afficher des caractères.

Comment parcourir un tableau ? Plusieurs choix possibles, voici les bases: while, for, foreach. Pour parcourir un tableau, il est souvent plus simple d'utiliser la boucle foreach. Il est facilement possible de passer d'une boucle à l'autre.
Pour afficher notre contenu, on va utiliser echo.
<?php
$lettres = ['A', 'B', 'C'];

foreach($lettres as $lettre) {
    echo $lettre;
}
Le résultat de ce script sera alors: ABC

Intégrons alors le deuxième tableau. Que veux tu faire ? Pour chaque lettre, afficher la lettre avec chaque chiffre. On obtient alors en code deux boucles imbriquées.
<?php
$lettres = ['A', 'B', 'C'];
$chiffres = [1, 2];

foreach($lettres as $lettre) {
    foreach($chiffres as $chiffre) {
        echo "$lettre$chiffre<br/>";
    }
}
On obtient le résultat attendu !

Bonne soirée.
Modifié en dernier par vincent.c le 04 nov. 2016, 00:11, modifié 2 fois.
Vincent Chapron
Formateur et Consultant PHP/JS @Openska
Twitter: @vincent_chapron

Mammouth du PHP | 2703 Messages

04 nov. 2016, 00:09

$data1 = array('A', 'B');
$data2 = array('1', '2', '3');
for($i=0; $i<sizeof($data1); $i++) {  
  for($j=0; $j<sizeof($data2); $j++) {
    echo $data1[$1].$data2[$j].'<br/>';    
  }  
}

Chris32
Invité n'ayant pas de compte PHPfrance

04 nov. 2016, 00:14

Merci pour ta réponse, c'est vrai que c'est très clair ainsi (je débute donc je tâtonne et balbutie).