Autor | Zpráva | ||
---|---|---|---|
Blah Profil * |
#1 · Zasláno: 9. 12. 2007, 13:33:41
Zdravím,
měl bych dotaz ohledně počtu prvků v poli. Dejme tomu, že mám pole o X položkách, který se v poli vyskytujou v různým počtu. Já bych potřeboval vybrat z tohoto pole deset nejpočetnějších a seřadit je sestupně podle hojnosti. Nemůžu nějak přijít, jak docílit toho, aby se mi ty prvky správně sečetly a seřadily. Jinak prvky mají vždy stejný název (včetně velkých a malých písmen diakritiky či mezer). Poradíte prosím? |
||
djlj Profil |
#2 · Zasláno: 9. 12. 2007, 13:34:58
Asi bych to projel foreach (nebo podobnou funkcí) a do nového pole bych si ukládal ty hodnoty + jejich počet.
|
||
Blah Profil * |
#3 · Zasláno: 9. 12. 2007, 13:38:32
a nějaká ukázka? Něco podobného jsme zkoušel, ale neúspěšně, tak počítám, že někde dělám něco špatně
|
||
Aleš Janda Profil |
#4 · Zasláno: 9. 12. 2007, 13:56:20
Tak sem hoď to, co jsi zkoušel ;-)
|
||
Blah Profil * |
#5 · Zasláno: 9. 12. 2007, 14:08:27
Aleš Janda: jé, tak to už nemám... Nefungovalo to, tak jsem to začal předělávat :( momentálně mám ty prvky z pole rozdělený pomocí explode na samostatný části. Pak jsem je sřadil pomocí sort podle abecedy a teď se snažím je nějak přinuti, aby se sečetly a posléze seřadili podle toho součtu...
|
||
tiso Profil |
#6 · Zasláno: 9. 12. 2007, 14:21:54
napríklad takto:
$out=array_fill_keys(array_unique($in), 0); foreach($in as $key => $val){$out[$val]+=1;} arsort($out); $out=array_slice($out, 0, 10); |
||
Blah Profil * |
#7 · Zasláno: 9. 12. 2007, 14:23:46
tak už jsem se přiblížil k cíli... Mám to sečtený a seřazený ve tvaru:
[polozka1] => 30 [polozka2] => 21 [polozka3] => 15 . . . . (po vykonání print_r($polozky);) A já to teď potřebuju dostat do tvaru: polozka1 (30) polozka2 (20) polozka3 (15) |
||
BetaCam Profil |
#8 · Zasláno: 9. 12. 2007, 14:27:03
foreach ($polozky AS $key => $val)
{ echo $key.'('.$val.')'; } |
||
Blah Profil * |
#9 · Zasláno: 9. 12. 2007, 14:29:14
BetaCam: no jasně, už mi to nemyslí... Díky moc všem, už mi to konečně funguje
|
||
Časová prodleva: 16 let
|
0