Lecture d'un tableau

Signaler
Messages postés
17
Date d'inscription
dimanche 28 août 2005
Statut
Membre
Dernière intervention
25 mars 2011
-
Messages postés
17
Date d'inscription
dimanche 28 août 2005
Statut
Membre
Dernière intervention
25 mars 2011
-
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

Messages postés
255
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
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
Messages postés
255
Date d'inscription
vendredi 20 avril 2007
Statut
Membre
Dernière intervention
9 août 2013
3
$element = $tmp (sans []) desole mauvais copier coller
Messages postés
17
Date d'inscription
dimanche 28 août 2005
Statut
Membre
Dernière intervention
25 mars 2011

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!
Messages postés
17
Date d'inscription
dimanche 28 août 2005
Statut
Membre
Dernière intervention
25 mars 2011

sans les [] devant $element il me retourne forcement la dernière ligne. Le message précédent donne l'erreur si $element[] = $tmp
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
42
$mixed = implode('*', array('A*C','A*B*C','A*B','A*B*C'));
$stats = array_count_values(explode('*', $mixed));
var_dump($stats);



______________________________________________________________________
Messages postés
17
Date d'inscription
dimanche 28 août 2005
Statut
Membre
Dernière intervention
25 mars 2011

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
Messages postés
392
Date d'inscription
mercredi 28 octobre 2009
Statut
Membre
Dernière intervention
23 mars 2012
42
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)

...

______________________________________________________________________
Messages postés
17
Date d'inscription
dimanche 28 août 2005
Statut
Membre
Dernière intervention
25 mars 2011

ca roule, merci bien