Numérotation dans un tableau

Par Michel4-7, il y a 5 ans


Bonjour,

J'ai un problème (certainement basique et tout bête) mais je n'arrive pas a le solutionner.
Je travaille sur une API foot.
Cette API me donne les classements des championnats (Nom de l'équipe, Points, Matchs joués, Matchs nuls, Matchs perdu, Nombre de buts marqués, Nombre de buts encaissés et Différence de buts).
Elle ne donne pas la position dans le classement (tout bêtement une numérotation de 1 à n (selon le nombre d'équipes dans le championnat).

Pour afficher des données Json de l'API absolument aucun souci. Tout fonctionne nickel.
Mon souci c'est la numérotation de 1 à n
Je numérote bien en fonction du nombre d'équipe mais je n'arrive pas a placer le rang a coté d'une et une seule equipe.

Mes données sont affichées a l'aide d'une boucle foreach() et chacune d'entre-elles sont dans un tableau 'classique' (table - tr - td ...).

Pour le rang j'ai essayé ma condition dans une boucle for, une boucle while et une boucle do while. la numérotation de 1 à n se fait pour chaque équipe. J'ai mis la boucle dans dans le foreach, à l'extérieur du foreach il n y a rien qui va.

Voici les conditions que j'ai essayé (pour un championnat à 18 équipes)

// ma boucle do... while $rang = 1; do { echo '<td>'.$rang . '</td><br />'; $rang++; } while( $rang <=18 ); // ma boucle while $rang = 1; while( $rang <=18 ){ echo '<td>'.$rang++. '</td><br />'; } // ma boucle for for($rang=1;$rang<=18;$rang++){ echo '<td>'.$rang. '</td><br />'; } j'ai placé ces 3 boucles a l'intérieur du foreach (a l'emplacement ou je souhaite afficher le rang) Voici le code du tableau $table = file_get_contents("adresse donnée par l'API qui fonctionne puisque j'ai toutes les données affichées"); $parsedTable = json_decode($table,true); foreach ($parsedTable['table'] as $classements) { echo '<table>'; echo '<tbody>'; echo '<tr>'; echo "J'ai placé mes boucles avec le $rang à cet endroit"; echo '<td>'; include '../library/equipes_classements.php'; //ici c'est un fichier externe contenant un switch case traduisant le noms des équipes echo '</td>'; echo '<td>'.$classements['total']. '</td>'; echo '<td>'.$classements['played']. '</td>'; echo '<td>'.$classements['win']. '</td>'; echo '<td>'.$classements['draw']. '</td>'; echo '<td>'.$classements['loss']. '</td>'; echo '<td>'.$classements['goalsfor']. '</td>'; echo '<td>'.$classements['goalsagainst']. '</td>'; echo '<td>'.$classements['goalsdifference']. '</td>'; echo '</tr>'; echo '</tbody>'; echo '</table>'; }

Et mon problème c'est que la numérotation de 1 à 18, je l'obtiens pour chacune des équipes
donc

1 2 3 ... 18 NOM DE L'EQUIPE 1 1 2 3 ... 18 NOM DE L'EQUIPE 2 1 2 3 ... 18 NOM DE L'EQUIPE 3

etc.. jusque l'équipe 18
Merci si quelqu'un peut m'aider (je ne sais pas si j'ai merdé dans les boucles ou si je ne les ai pas incluses au bon endroit dans mon code)

12 réponses

Carouge10, il y a 5 ans

non, non, non
seul le foreach suffit

$rang = 1; foreach ($parsedTable['table'] as $classements) { // code echo $rang; // code $rang++; }
Michel4-7, il y a 5 ans

Effectivement ça fonctionne ... Moi qui me cassait a essayer des créer des boucles ... quel idiot :-(
Merci, j'ai le résultat que je souhatais avoir

Carouge10, il y a 5 ans

parfait, tu peux passer le sujet en résolu

Carouge10, il y a 5 ans

oui ou juste après l'avoir affiché.
tout dépant de combien de fois tu l'affiches par ligne

Michel4-7, il y a 5 ans

Mais il faut que je passe par une boucle while ? (2 jours que je me prends le chou la dessus). un truc du genre
foreach(...){
while{
}
mes echo;
$rang++;
}

Carouge10, il y a 5 ans

Bonsoir,
il faut te serviir de la boucle foreach avec à l'intérieur un compteur, comme tu l'as fait pour les boucles while et do/while

foreach { echo $rang; // tes affichages $rang++; }
Carouge10, il y a 5 ans

oui pardon, j'ai fait à la va-vite
la condition, tu l'as déjà, elle ne change pas

Michel4-7, il y a 5 ans

dans la boucle foreach déjà existente ? ou inclure une boucle foreach dans la boucle foreach ?

Carouge10, il y a 5 ans

celle déjà existante

Michel4-7, il y a 5 ans

Bien c'est ce que j'ai déjà fait non ?

Carouge10, il y a 5 ans

mon code te montre en gros comment devrait être ton "gros" foreach

Michel4-7, il y a 5 ans

le $rang++ se met tout a la fin (après avoir intégré tous les echo) ?