8
votes

PHP Obtenir l'élément avec 5 l'occurrence la plus élevée dans un tableau

Quelque chose de similaire à ceci: Obtenez l'élément avec la plus haute occurrence de un tableau

Différence est dont j'ai besoin de plus d'un résultat, nécessité 5 résultats. Donc la plus haute survenue supérieure dans un (grand) tableau.

Merci!


0 commentaires

3 Réponses :


1
votes

Construisez la matrice de comptes et mettez-les dans l'ordre inverse:

$mode = array_count_values($input);
arsort($mode);
$i = 0;
foreach ($mode as $k => $v) {
  $i++;
  echo "$i. $k occurred $v times\n";
  if ($i == 5) {
    break;
  }
}


0 commentaires

14
votes

php fournit en fait une pratique pratique Fonctions de tableau Vous pouvez utiliser pour atteindre Ceci.

Exemple: P>

<?php
$arr = array(
    'apple', 'apple', 'apple', 'apple', 'apple', 'apple',
    'orange', 'orange', 'orange',
    'banana', 'banana', 'banana', 'banana', 'banana', 
    'pear', 'pear', 'pear', 'pear', 'pear', 'pear', 'pear', 
    'grape', 'grape', 'grape', 'grape', 
    'melon', 'melon', 
    'etc'
);

$reduce = array_count_values($arr);
arsort($reduce);
var_dump(array_slice($reduce, 0, 5));

// Output:
array(5) {
    ["pear"]=>      int(7)
    ["apple"]=>     int(6)
    ["banana"]=>    int(5)
    ["grape"]=>     int(4)
    ["orange"]=>    int(3)
}


0 commentaires

7
votes

Vous allez ici:

$yourArray = array(1, "hello", 1, "world", "hello", "world", "world");
$count = array_count_values($yourArray);

arsort($count);

$highest5 = array_slice($count, 0, 5);

echo '<pre>';
print_r($highest5);
echo '</pre>';


1 commentaires

@Matt: Merci, quand j'ai posté ma réponse, je n'ai pas réalisé que vous utilisiez déjà la fonction array_count_values ​​() .