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

Kodeord


Reklame
Top 10 brugere
Perl
#NavnPoint
bjarneA 141
poul_from 50
soccer 30
Nicknack 14
Tmpj 0
shift i et array der ikke er 0-indekseret
Fra : Jens Thomsen


Dato : 03-11-07 23:35

Jeg har et array, hvor indexerne ikke er 0,1,2... Se nedenfor.

Jeg ønsker at løbe arrayet igennem og fjerne de indgange jeg har behandlet.

Jeg har brug for både index og værdi.


Nedenstående virker ikke, men hvordan gør man så?



my @arr = ();
$arr [2] = "x";
$arr [5] = "y";

while ( my $key = shift (@arr) )
{
print $key ."\n";
}



 
 
Adam Sjøgren (04-11-2007)
Kommentar
Fra : Adam Sjøgren


Dato : 04-11-07 00:00

On Sat, 3 Nov 2007 23:35:21 +0100, Jens wrote:

> Jeg har brug for både index og værdi.
[...]

> my @arr = ();
> $arr [2] = "x";
> $arr [5] = "y";

Din shift-løkke dur ikke, da array'et har undef på de "tomme" positioner
og derfor stopper når den første nås.

Du kan f.eks. bruge dette i stedet:

for (my $i=0; $i<=$#arr; $i++) {
next if (!defined $arr[$i]);
print "$i: $arr[$i]\n";
}

Men måske er det værd at træde et skridt tilbage og overveje om en liste
er den nemmeste måde at løse dit problem på.

Det lugter lidt af noget en hash ville være bedre til.

Hvilket problem er det du er ved at løse?


Mvh.

--
"Grittings. Ma nam is Kahlfin." Adam Sjøgren
asjo@koldfront.dk

Jens Thomsen (04-11-2007)
Kommentar
Fra : Jens Thomsen


Dato : 04-11-07 08:24

> Du kan f.eks. bruge dette i stedet:
>
> for (my $i=0; $i<=$#arr; $i++) {
> next if (!defined $arr[$i]);
> print "$i: $arr[$i]\n";
> }

Perfekt


> Men måske er det værd at træde et skridt tilbage og overveje om en liste
> er den nemmeste måde at løse dit problem på.
>
> Det lugter lidt af noget en hash ville være bedre til.

Du har fuldstændigt ret. En hash er den rette løsning her!
Det er at hacke listen at give indexerne værdier der har en selvstændig
betydning.

Jeg laver det om til en hash med det samme!

Tak for hjælpen.



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

Månedens bedste
Årets bedste
Sidste års bedste