IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage PHP Discussion :

Compter le nombre d'occurrences dans un tableau trié


Sujet :

Langage PHP

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Inscrit en
    Novembre 2012
    Messages
    1
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2012
    Messages : 1
    Points : 1
    Points
    1
    Par défaut Compter le nombre d'occurrences dans un tableau trié
    Bonjour à tous,
    voila grosso modo : j'ai un tableau trié dans lequel j'ai plusieurs lignes contenant des infos, parmi lesquelles le mois et un texte.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    $t = array(
    [0] => array( [0] => 5, [1] => 'toto'),
    [1] => array( [0] => 8, [1] => 'momo'),
    [2] => array( [0] => 8, [1] => 'zozo'),
    [3] => array( [0] => 8, [1] => 'jojo'),
    [4] => array( [0] => 10, [1] => 'coco'),
    [5] => array( [0] => 10, [1] => 'nono'),
    );
    le but c de calculer le nombre d’occurrence pour chaque mois dans un tableau et d'obtenir un array comme ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $r = array(
    [0] => array( [0] => 5, [1] => 1),
    [1] => array( [0] => 8, [1] => 3),
    [2] => array( [0] => 10, [1] => 2),
    );
    Je fais ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $i=0; $j=0;
    do {
    $val = $t[$j][1];
    $r[$i][0] = $val;
    $r[$i][1] = 0;
    while ($t[$j+1][1] == $val) {
    $r[$i][1] += 1;
    $j++;
    }
    $i++;
    } while ($j < count($t);
    et ça me fait planter mon navigateur et je dois mettre fin à ff avec un kill

    J'ai trouvé cette solution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    $i=0; $j=0;
    do {
    $val = $t[$j][1];
    $r[$i][0] = $val;
    $r[$i][1] = 0;
    while ($t[+$j][1] == $val) {
    $r[$i][1] += 1;
    $j++;
    }
    $i++;
    } while ($j < count($t);
    ça fonctionne très bien, mais je ne comprends pas pourquoi?

    Quelqu’un aurais une tite idée?

    Merci d'avance pour vos réponses

    Samsem

  2. #2
    Modérateur
    Avatar de sabotage
    Homme Profil pro
    Inscrit en
    Juillet 2005
    Messages
    29 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Juillet 2005
    Messages : 29 208
    Points : 44 155
    Points
    44 155
    Par défaut
    Utilise foreach() pour parcourir tes tableaux et array_count_values pour compter les valeurs :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    foreach ($t as $key=>$value ) {
          $mois[] = $value[0];
    }
    $result = array_count_values($mois);
     
    foreach($result as $key=>$value) {
        $r[] = array(0=>$key, 1=>$value);
    }
    Je n'ai pas regardé le détail mais je suppose que ton premier code ne s'arrête pas à la fin du tableau car les valeurs vont être FALSE en $j et $j+1 à l'infini.

Discussions similaires

  1. Réponses: 7
    Dernier message: 19/09/2009, 00h05
  2. Réponses: 3
    Dernier message: 18/07/2008, 03h16
  3. Compter le nombre d'occurence dans un tableau
    Par titou250 dans le forum Excel
    Réponses: 2
    Dernier message: 08/01/2008, 16h25
  4. Réponses: 2
    Dernier message: 06/05/2007, 23h43
  5. Compter le nombre d'élément dans un tableau
    Par cryptorchild dans le forum Langage
    Réponses: 6
    Dernier message: 08/07/2005, 13h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo