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 :

Comptez le nombre de valeurs identiques dans un tableau


Sujet :

Langage PHP

  1. #1
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 110
    Points : 91
    Points
    91
    Par défaut Comptez le nombre de valeurs identiques dans un tableau
    Bonjour,

    Grâce à un formulaire je récupère plusieurs noms de machines qui peuvent être identiques.
    Ensuite je les compte et j'affiche la ou les machines les plus repondu.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    $array = array_merge($machinesRepondusQuestion1,$machinesRepondusQuestion2,$machinesRepondusQuestion3,$machinesRepondusQuestion4,$machinesRepondusQuestion5);
     
    $count = array_count_values($array);
     
    $machineGagnantes = array_keys ($count, max($count));
    Seulement il faudrait que je puisse afficher 2 machines en tout temps et pas seulement au moment d'une egalité !
    Comment puis-je faire ?

  2. #2
    Expert éminent sénior
    Avatar de rawsrc
    Homme Profil pro
    Dev indep
    Inscrit en
    Mars 2004
    Messages
    6 142
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Dev indep

    Informations forums :
    Inscription : Mars 2004
    Messages : 6 142
    Points : 16 545
    Points
    16 545
    Billets dans le blog
    12
    Par défaut
    Salut,

    je n'ai rien compris.

  3. #3
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 110
    Points : 91
    Points
    91
    Par défaut
    AH merde !

    euuuh

    J'ai un tableau avec plusieurs valeurs c'est $array
    Dans ce tableau je compte le nombre de chaque valeur présente
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $count = array_count_values($array);
    et j’affiche ensuite la valeur qui est la plus représenté (celle qui a été répondu le plus de fois)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    $machineGagnantes = array_keys ($count, max($count));
    Moi j'aimerais pouvoir afficher la valeur max mais aussi la deuxième
    est-ce possible ?

  4. #4
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Moi j'ai compris, mais parce que j'ai suivi (et répondu) à ce sujet ^^

    Oui c'est possible (le code est commenté) :

    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
    19
    20
    21
    22
    23
    24
    25
    26
    <?php
     
    $count = array(
        1 => 4,
        2 => 2,
        3 => 2,
        4 => 5,
        5 => 2
    );
     
    function getKeysValueMax($array) {
        return array_keys($array, max($array));
    }
     
    $machinesGagnantes = getKeysValueMax($count);
     
    // Si on a un seul résultat
    if (count($machinesGagnantes) == 1) {
        // On enlève la machine gagnante de la liste 
        unset($count[$machinesGagnantes[0]]);
     
        // Et on recherche les "nouvelles" machines gagnantes (soit la (les) deuxième(s)), que l'on rajoute à la première gagnante
        $machinesGagnantes = array_merge($machinesGagnantes, getKeysValueMax($count));
    }
     
    var_dump($machinesGagnantes);
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  5. #5
    Membre régulier
    Homme Profil pro
    Inscrit en
    Juin 2012
    Messages
    110
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 110
    Points : 91
    Points
    91
    Par défaut
    Bon c’était vraiment si peu clair que ça mon poste là ?

    En tout cas merci ! ça marche nickel, ça me montre les énormes lacunes que j'ai aussi au passage sur les fonctions natives de php ^^

  6. #6
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Sinon, tu peux aussi trier ton tableau de compteurs par ordre décroissant avec arsort.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    $count = array_count_values($array);
    arsort($count);
     
    $valeurMax = key($count); // la 1er valeur du tableau est le max
    next($count); // on avance d'une valeur
    $valeurMax2 = key($count); // la 2e valeur du tableau est le 2e max
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

  7. #7
    Membre expert
    Avatar de Spartacusply
    Homme Profil pro
    Développeur Web
    Inscrit en
    Mai 2011
    Messages
    1 723
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Mai 2011
    Messages : 1 723
    Points : 3 274
    Points
    3 274
    Par défaut
    Le problème de cette méthode c'est que s'il y a 3 (ou plus) valeurs qui possèdent à égalité le max, seules les deux premières sont remontées.
    Un message utile vous a aidé ? N'oubliez pas le

    www.simplifions.fr - Simplifier vos comptes entre amis !

  8. #8
    Modératrice
    Avatar de Celira
    Femme Profil pro
    Développeuse PHP/Java
    Inscrit en
    Avril 2007
    Messages
    8 633
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Développeuse PHP/Java
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2007
    Messages : 8 633
    Points : 16 372
    Points
    16 372
    Par défaut
    Effectivement. J'ai tendance à penser au max comme étant unique (vainqueur par KO )
    Du coup, la méthode de Spartacusply est plus complète.
    Modératrice PHP
    Aucun navigateur ne propose d'extension boule-de-cristal : postez votre code et vos messages d'erreurs. (Rappel : "ça ne marche pas" n'est pas un message d'erreur)
    Cherchez un peu avant poser votre question : Cours et Tutoriels PHP - FAQ PHP - PDO une soupe et au lit !.

    Affichez votre code en couleurs : [CODE=php][/CODE] (bouton # de l'éditeur) et [C=php][/C]

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

Discussions similaires

  1. [XL-2010] Comment compter le nombre de valeur identique dans un sheet.
    Par zoltix dans le forum Excel
    Réponses: 4
    Dernier message: 23/04/2011, 23h06
  2. [WD-2003] Compter le nombre de valeurs identiques dans un tableau word
    Par borocam dans le forum VBA Word
    Réponses: 4
    Dernier message: 20/01/2010, 18h19
  3. [MySQL] Compter le nombre de valeurs identiques dans une colonne d'une table
    Par luca120 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 03/12/2009, 00h40
  4. recherche de valeur identique dans un tableau
    Par jean tof dans le forum Langage
    Réponses: 9
    Dernier message: 20/06/2006, 13h33
  5. Réponses: 2
    Dernier message: 30/04/2006, 20h22

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