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 :

[Tableaux] compter les éléments dans 1 tableau....


Sujet :

Langage PHP

  1. #1
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut [Tableaux] compter les éléments dans 1 tableau....
    Salut à tous

    Voici mon problème :
    j'ai un tableau à 2 dimension du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    A   tom
    A   titi
    A   toto
    B   pierre
    B   fafa
    B   pierre
    soit :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    $tab[0][0] --> A
    $tab[0][1] -->tom
    $tab[1][0] --> A
    etc ...
    Je cherche le meilleur moyen de compter pour chaque element de la première colonne (A, B, etc ...) le nombre de couple (1er colonne, 2ème colonne) différent ...

    ici le résultat serai :
    A --> 3
    B --> 2

    Je remercie tout les gens suceptible de m'aider
    -------------------
    Ickou

  2. #2
    Membre émérite
    Avatar de Nesmontou
    Homme Profil pro
    Architecte logiciel
    Inscrit en
    Septembre 2004
    Messages
    1 612
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Architecte logiciel
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2004
    Messages : 1 612
    Points : 2 969
    Points
    2 969
    Par défaut
    Salut, tu peux faire quelque chose du style
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    $compte = array();
     
    foreach($ton_tableau as $row) {
      $nom = $row[0];
     
      if(isset($compte[$nom]) {
        $compte[$nom]++;
      }
      else {
        $compte[$nom] = 1;
      }
    }
    Et pour afficher les totaux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    foreach($compte as $nom => $total) {
      echo $nom.' --> '.$total.'<br/>';
    }
    Je n'ai pas testé
    Si vous ne pouvez expliquer un concept à un enfant de six ans, c'est que vous ne le comprenez pas complètement. Albert EINSTEIN

    F.A.Q. : Java, PHP, (X)HTML / CSS

    N'oubliez pas de cliquer sur le bouton Résolu en bas de page quand vous avez obtenu une solution à votre problème

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    489
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Janvier 2004
    Messages : 489
    Points : 388
    Points
    388
    Par défaut
    Et avec ca ?

    http://fr2.php.net/manual/fr/function.array-count-values.php

  4. #4
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Sur un tableau multidimensionnel array_count_values n'aura que peu d'impact. La solution du parsage est plus indiquée, voir mieux, créer une fonction utilisateur à passer comme argument à array_walk.
    Consultant idéaliste.

  5. #5
    Rédacteur

    Avatar de Yogui
    Homme Profil pro
    Directeur technique
    Inscrit en
    Février 2004
    Messages
    13 721
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Yonne (Bourgogne)

    Informations professionnelles :
    Activité : Directeur technique

    Informations forums :
    Inscription : Février 2004
    Messages : 13 721
    Points : 29 985
    Points
    29 985
    Par défaut
    Salut

    Voici une proposition, tu en fais ce que tu veux : parcourir le tableau principal avec foreach et appliquer count() à chacun de ses éléments.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $count = 0;
    foreach($tableau as $element){
       $count += count($element);
    }
    Sachant que, dans ton exemple, $tableau est un tableau de tableaux et que $element est donc lui-même un tableau (de chaînes de caractères).

  6. #6
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    merci à tous

    J'ai essayé vos propositions et aucune convient car je pense que personne a comprit ce que je voulais.....

    La méthode de kirkis donne "10" car 10 cases dans le tableau
    les autres méthodes ne donnent pas de résultat......

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
    <?php
     
    $tab = array ();
    $tab[0][0]='A';
    $tab[0][1]='tom';
    $tab[1][0]='A';
    $tab[1][1]='titi';
    $tab[2][0]='A';
    $tab[2][1]='toto';
    $tab[3][0]='B';
    $tab[3][1]='pierre';
    $tab[4][0]='B';
    $tab[4][1]='pierre';
     
     
    print_r($tab);
    ?>
    Je veux obtenir comme résultat :
    A --> 3
    B --> 2

    comme pierre est 2 fois associé à B, on le compte qu'une seule fois.
    -------------------
    Ickou

  7. #7
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Et là :

    <?php
    &#160;&#160;&#160;&#160;$tab&#160;
    =&#160;array&#160;(&#160;&#160;&#160;&#160;array&#160;(&#160;'A'&#160;,&#160;'tom'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'A'&#160;,&#160;'titi'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'A'&#160;,&#160;'toto'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'B'&#160;,&#160;'pierre'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'B'&#160;,&#160;'pierre'&#160;)&#160;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160&#160;;

    &#160;&#160;&#160;&#160;echo&#160;
    '<pre>'&#160;;
    &#160;&#160;&#160;&#160;
    print_r&#160;(&#160;$tab&#160;)&#160;;&#160;
    &#160;&#160;&#160;&#160;echo&#160;
    '</pre>'&#160;;

    &#160;&#160;&#160;&#160;
    $new_tab&#160;=&#160;array()&#160;;

    &#160;&#160;&#160;&#160;foreach&#160;(&#160;
    $tab&#160;as&#160;$k&#160;=>&#160;$v&#160;)
    &#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(&#160;!
    array_key_exists&#160;(&#160;$v[0]&#160;,&#160;$new_tab&#160;)&#160
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $new_tab[$v[0]]&#160;=&#160;1&#160;;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $new_tab[$v[0]]&#160;++&#160;;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;
    &#160;&#160;&#160;&#160;echo&#160;
    '<pre>'&#160;;
    &#160;&#160;&#160;&#160;
    print_r&#160;(&#160;$new_tab&#160;)&#160;;&#160;
    &#160;&#160;&#160;&#160;echo&#160;
    '</pre>'&#160;;
    ?>

    Phpsyntaxcolor powered by decabodi.com

    C'est mieux ?
    Consultant idéaliste.

  8. #8
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    désolé mais c'est pas mieux car B --> 2 or on devrait avoir B --> 1 car B associé à pierre est en double .....
    -------------------
    Ickou

  9. #9
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    Bon là c'est peut-être un peu foireux mais c'est à l'arraché :

    <?php
    &#160;&#160;&#160;&#160;$tab&#160;
    =&#160;array&#160;(&#160;&#160;&#160;&#160;array&#160;(&#160;'A'&#160;,&#160;'tom'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'A'&#160;,&#160;'titi'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'A'&#160;,&#160;'toto'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'B'&#160;,&#160;'pierre'&#160;)&#160;,
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;array&#160;(&#160;
    'B'&#160;,&#160;'pierre'&#160;)&#160;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160&#160;;

    &#160;&#160;&#160;&#160;echo&#160;
    '<pre>'&#160;;
    &#160;&#160;&#160;&#160;
    print_r&#160;(&#160;$tab&#160;)&#160;;&#160;
    &#160;&#160;&#160;&#160;echo&#160;
    '</pre>'&#160;;

    &#160;&#160;&#160;&#160;
    $new_tab&#160;=&#160;array()&#160;;
    &#160;&#160;&#160;&#160;
    $other_tab&#160;=&#160;array()&#160;;

    &#160;&#160;&#160;&#160;foreach&#160;(&#160;
    $tab&#160;as&#160;$k&#160;=>&#160;$v&#160;)
    &#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(&#160;!
    array_key_exists&#160;(&#160;$v[0]&#160;,&#160;$new_tab&#160;)&#160
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $new_tab[$v[0]]&#160;=&#160;1&#160;;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $other_tab[]&#160;=&#160;$v[1]&#160;;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;else
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;if&#160;(&#160;!
    in_array&#160;(&#160;$v[1]&#160;,&#160;$other_tab&#160;)&#160
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;{
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;
    $new_tab[$v[0]]&#160;++&#160;;
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;&#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;}
    &#160;&#160;&#160;&#160;
    &#160;&#160;&#160;&#160;echo&#160;
    '<pre>'&#160;;
    &#160;&#160;&#160;&#160;
    print_r&#160;(&#160;$new_tab&#160;)&#160;;&#160;
    &#160;&#160;&#160;&#160;echo&#160;
    '</pre>'&#160;;
    ?>

    Phpsyntaxcolor powered by decabodi.com
    Et on obtient bien :

    Array
    (
    [A] => 3
    [B] => 1
    )
    Consultant idéaliste.

  10. #10
    Membre régulier Avatar de Ickou
    Inscrit en
    Avril 2005
    Messages
    174
    Détails du profil
    Informations forums :
    Inscription : Avril 2005
    Messages : 174
    Points : 108
    Points
    108
    Par défaut
    merci macbook

    maintenant ça marche bien
    -------------------
    Ickou

  11. #11
    Membre éprouvé Avatar de macbook
    Inscrit en
    Février 2006
    Messages
    838
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 838
    Points : 1 009
    Points
    1 009
    Par défaut
    De rien. Un p'tit et que vive le rastafaraï...
    Consultant idéaliste.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 3
    Dernier message: 02/10/2007, 14h19
  2. [Tableaux] Rechercher les doublons dans un tableau
    Par jym_22 dans le forum Langage
    Réponses: 5
    Dernier message: 15/11/2006, 09h47
  3. [Tableaux] ajout d'éléments dans un tableau
    Par maysa dans le forum Langage
    Réponses: 7
    Dernier message: 06/11/2006, 10h09
  4. [Tableaux] Tester les éléments d'un tableau dans un if
    Par Leobaillard dans le forum Langage
    Réponses: 3
    Dernier message: 20/05/2006, 16h07
  5. [Tableaux] ajout d'élément dans un tableau
    Par maximenet dans le forum Langage
    Réponses: 3
    Dernier message: 28/02/2006, 20h24

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