La construction d'un “tableau croisé” ou “pivot” de la table à partir d'un tableau en php
J'ai un tableau d'objets définis de la même façon la ci-dessous:
$scores = array();
//Bob round 1
$s = new RoundScore();
$s->Round_Name = 'Round 1';
$s->Player_Name = 'Bob';
$s->Score = 10;
$scores[0] = $s;
//Bob round 2
$s = new RoundScore();
$s->Round_Name = 'Round 2';
$s->Player_Name = 'Bob';
$s->Score = 7;
$scores[1] = $s;
//Jack round 1
$s = new RoundScore();
$s->Round_Name = 'Round 1';
$s->Player_Name = 'Jack';
$s->Score = 6;
$scores[2] = $s;
//Jack round 2
$s = new RoundScore();
$s->Round_Name = 'Round 2';
$s->Player_Name = 'Jack';
$s->Score = 12;
$scores[3] = $s;
Si j'en boucle et faire un dump de la $scores
objet dans une table, il ressemblera à quelque chose comme ceci:
Round_Name Joueur Score ---------------------------- Ronde 1 Bob 10 Ronde 2 Bob 7 Ronde 1 Jack 6 Ronde 2 Jack 12
Ce que je veux, cependant, est quelque chose comme ceci:
Joueur De La Ronde 1 Ronde 2 Total ------------------------------- Bob 10 7 17 Jack 6 12 18
Je ne vais pas savoir à l'avance combien de tours ou de joueurs, il y a et c'est juste de dire que je ne peux pas changer la façon dont les objets sont construits.
Quel est le moyen le plus efficace de faire cela en php?
Je pense que vous avez une faute de frappe. Pour Bob ronde 2: "$tours[1] = $s;" au lieu de: "$scores[1] = $s;"
Merci, vous avez raison - je me suis fixé maintenant 🙂
Merci, vous avez raison - je me suis fixé maintenant 🙂
OriginalL'auteur Damovisa | 2009-04-03
Vous devez vous connecter pour publier un commentaire.
Si nous pouvons supposer que:
et puis par le nombre de tours
Alors, ce que nous pouvons faire est d'imprimer chaque score du joueur que nous avons déménagé dans le tableau tandis que le calcul du total dans le processus, mais de le réinitialiser si nous voyons un nouveau joueur:
Exemple de sortie:
Cela devrait être assez efficace, car il ne passe par le tableau une fois.
OriginalL'auteur maxyfc
Aussi loin que je peux dire, PHP tableaux sont mis en œuvre comme les tables de hachage (donc recherche/mise à jour devrait être assez efficace)
Sera le temps de l'efficacité-être même un problème, de toute façon?
Je voudrais juste faire de la "simplicité":
(Je sais que les tableaux ne sont pas correctement initialisé, mais vous voyez l'idée)
natsort($round_names)
btw.Pourquoi vous utiliser foreach ($round_names $à la ronde) echo tours[$aller -]\t"; au lieu de foreach ($rondes $aller) echo $ronde
OriginalL'auteur v3.