Lecture d'un tableau

cs_brutos Messages postés 17 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 25 mars 2011 - 22 mars 2011 à 16:35
cs_brutos Messages postés 17 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 25 mars 2011 - 24 mars 2011 à 09:39
Salut à tous,

j'ai un soucis concernant la lecture d'un tableau.
En gros je récupère des scores dans un tableau. Ces scores sont sous cette forme A*B*C. J'en ai plusieurs à récupérer donc mon tableau a plusieurs lignes. Je souhaite récupérer toutes les valeurs scores individuellement dans un nouveau tableau (Ligne 1 du tableau A, ligne 2 du tableau B, ligne 3 du tableau = C... pour tout les scores).
Cela me permettrai de compter le nombre de A puis le nombre de B et le nombre de C afin de proposer un score global.

Pour le moment j'ai fait ceci, mais j'ai un soucis puisque je ne récupère pas toutes les valeurs :

$element = array();
  foreach ($dernierScore as $valeur)
  {
    $tmp = explode('*', $valeur['resultats']);
    $element[] = $tmp[1];
  }
  print_r ($element);
  $nombre = array_count_values($element);
  foreach ($nombre as $valeur)
  {
    echo $valeur . '
';
  }


Ce bout de code me renvoi ceci :

Array ( [0] => A [1] => A [2] => B [3] => C [4] => B [5] => A [6] => A )
4 (nombre de A)
2 (nombre de B)
1 (nombre de C)

$tmp[1] me renvoi les deuxièmes lettres de chaque lignes du tableau, or il me faudrait toutes les lettres afin de pouvoir les compter. J'ai également remarqué que si l'ordre des lettres changes le comptage change également (par exemple si A arrive en premier on retournera en premier le nombre de A et si c'est B en premier le nombre de B etc).

En espérant avoir été assez explicite
bonne journée, julien

8 réponses

Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
22 mars 2011 à 16:57
C'est logique :

Tu fait explode('*', $valeur['resultats']);

Ca te renvois ca dans tmp : array(scoreA, scorceB, scoreC);

Et toi tu stocke $tmp[1]; soit scoreB.

$element[] = $tmp; et ca marchera mieux
0
Morphinof Messages postés 255 Date d'inscription vendredi 20 avril 2007 Statut Membre Dernière intervention 9 août 2013 4
22 mars 2011 à 16:58
$element = $tmp (sans []) desole mauvais copier coller
0
cs_brutos Messages postés 17 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 25 mars 2011
22 mars 2011 à 17:05
oui oui j'ai tenté
mais dès lors que je fais cette méthode je ne peux plus compter l'ensemble des A, B et C. L'erreur est la suivante :

Warning: array_count_values() [function.array-count-values]: Can only count STRING and INTEGER values!
0
cs_brutos Messages postés 17 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 25 mars 2011
22 mars 2011 à 17:08
sans les [] devant $element il me retourne forcement la dernière ligne. Le message précédent donne l'erreur si $element[] = $tmp
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
22 mars 2011 à 17:15
$mixed = implode('*', array('A*C','A*B*C','A*B','A*B*C'));
$stats = array_count_values(explode('*', $mixed));
var_dump($stats);



______________________________________________________________________
0
cs_brutos Messages postés 17 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 25 mars 2011
23 mars 2011 à 09:25
ton code fonctionne effectivement phpAnonyme. Il retourne bien le nombre de A, B ou C présent dans le tableau que tu as défini. Dès lors que j'intègre mon tableau (deux dimensions) il ne me prends plus les valeurs ($valeur['resultats']). J'ai également un soucis pour récupérer les valeurs numériques.

Une aide serait la bienvenue
0
phpAnonyme Messages postés 392 Date d'inscription mercredi 28 octobre 2009 Statut Membre Dernière intervention 23 mars 2012 55
23 mars 2011 à 15:31
Ben c'est le même principe ! Sauf que tu dois relier les valeurs en amont pour les mettre en 1 dimension.

foreach($array AS $val)
arrayMixed[] = implode('*', $val)

...

______________________________________________________________________
0
cs_brutos Messages postés 17 Date d'inscription dimanche 28 août 2005 Statut Membre Dernière intervention 25 mars 2011
24 mars 2011 à 09:39
ca roule, merci bien
0
Rejoignez-nous