/ Forside / Teknologi / Udvikling / PHP / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
PHP
#NavnPoint
rfh 3959
natmaden 3372
poul_from 3310
funbreak 2700
stone47 2230
Jin2k 1960
Angband 1743
Bjerner 1249
refi 1185
10  Interkril.. 1146
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 :)

Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408929
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste