|
| antal i array Fra : Martin |
Dato : 12-07-05 02:48 |
|
Hejsa
Har lige et lille spørgsmål :)
$antal = 3;
$array = array("lille","stor","lille","lille","small","lille","stor");
Jeg har et array der ligner noget ala ovenstående, nu vil jeg så gerne
skrive dem ud på 1 linje hvor der er MERE end $antal - ellers så skal de
bare skrives ud på flere linjer de andre.
Resultatet skulle blive noget ala
lille
stor
small
stor
Bemærk at "stor" skal stå der 2 gange, da den står 2 gange i arrayet :)
Hvordan kan det gøres nemmest?
| |
Peter Brodersen (12-07-2005)
| Kommentar Fra : Peter Brodersen |
Dato : 12-07-05 03:29 |
|
On Tue, 12 Jul 2005 03:47:54 +0200, Martin <news@natten-i.dk> wrote:
>$antal = 3;
>$array = array("lille","stor","lille","lille","small","lille","stor");
>
>Jeg har et array der ligner noget ala ovenstående, nu vil jeg så gerne
>skrive dem ud på 1 linje hvor der er MERE end $antal - ellers så skal de
>bare skrives ud på flere linjer de andre.
Du kan i første omgang kigge på fx array_count_values().
<?php
$array = array("lille","stor","lille","lille","small","lille","stor");
print_r(array_count_values($array));
?>
... viser:
Array
(
[lille] => 4
[stor] => 2
[small] => 1
)
>Resultatet skulle blive noget ala
>
>lille
>stor
>small
>stor
Du nævner ikke om du vil have emnerne i en bestemt rækkefølge eller ej
- altså om stor må stå to gange i træk, eller skal følge den opgivne
rækkefølge. Men en mulighed er for eksempel:
<?php
$antal = 3;
$array = array("lille","stor","lille","lille","small","lille","stor");
foreach(array_count_values($array) AS $k=>$v) {
print str_repeat("$k\n",($v>$antal?1:$v));
}
?>
... giver:
lille
stor
stor
small
--
- Peter Brodersen
| |
Martin (12-07-2005)
| Kommentar Fra : Martin |
Dato : 12-07-05 04:14 |
|
Peter Brodersen wrote:
> Du nævner ikke om du vil have emnerne i en bestemt rækkefølge eller ej
> - altså om stor må stå to gange i træk, eller skal følge den opgivne
> rækkefølge. Men en mulighed er for eksempel:
>
> <?php
> $antal = 3;
> $array = array("lille","stor","lille","lille","small","lille","stor");
> foreach(array_count_values($array) AS $k=>$v) {
> print str_repeat("$k\n",($v>$antal?1:$v));
> }
> ?>
>
> .. giver:
> lille
> stor
> stor
> small
Selvfølgelig - havde skam kigget på array_count_values - men da den gav
resulatet
Array
[stor] = 2;
osv osv.
Så vidste jeg ikk hvordan jeg skulle komme videre derfra - men
selvfølgelig havde slet ikk tænkt på at lave en foreach på den :)
Mange tak for svaret - det var brugbart :)
| |
|
|