2010-02-01 55 views

cevap

13

PHP aslında bazı kullanışlı array functions bunu başarmak için kullanabileceğiniz sağlar.

Örnek:

<?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) 
} 

DÜZENLEME: Bu Alix'ın sonrası kullanılan, array_slice eklendi. İşte

1

Yapı:

$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

Rozetiniz sayımı çok cool ... 12, 2^7-1, 2^8 + 1! –

7

gitmek:

$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>'; 
+0

+1; dizi_slice' – Matt

+0

@Matt: Teşekkürler, cevabımı gönderdiğimde, 'array_count_values ​​()' işlevini zaten kullandığınızı farketmedim. –

İlgili konular