Länge eines Arrays ermitteln?
Jonas
- perl
0 Max0 Norbert Klein
Hallo
Also ich hab ein Array @array. Nun will ich ermitteln, wieviel einträge der Array hat. Das mach ich im moment so:
$i = 0;
foreach(@array) {$++;}
Klappt auch ohne Problem, aber es stellt sich mir die Frage, ob es dafür nicht auch eine eingebaute "Funktion" gibt!
Merci aus der Schweiz ;)
Jonas
Klappt auch ohne Problem, aber es stellt sich mir die Frage, ob es dafür nicht auch eine eingebaute "Funktion" gibt!
das geht ganz einfach mit $#array
Klappt auch ohne Problem, aber es stellt sich mir die Frage, ob es dafür nicht auch eine eingebaute "Funktion" gibt!
das geht ganz einfach mit $#array
Danke!
Hallo,
wieso eigentlich $# ?
Ich habe mit
$anzahl_elemente = @array;
nie Probleme gehabt.
$xNeTworKx.
Klappt auch ohne Problem, aber es stellt sich mir die Frage, ob es dafür nicht auch eine eingebaute "Funktion" gibt!
das geht ganz einfach mit $#array
Nicht ganz 100% richtig. Du kriegst damit wie schon gesagt, den Index des letzten Elementes. folglich wäre es richtiger:
$#array - $[
Die anzahl der Elemente bekommst du mit scalar @array
siehe:
$[ = 0;
@test = qw/1 2 3 4 5 6 7 8 9 0/;
print "länge: $#test\n";
print "Anzahl der elemente: ". (scalar @test)."\n";
$[ = 1;
@test = qw/1 2 3 4 5 6 7 8 9 0/;
print "länge: $#test\n";
print "Anzahl der elemente: ". (scalar @test)."\n";
Struppi.
achso, danke für die aufklärung, aber worin besteht der unterschied zwischen der länge eines arrays und dem index des letzten elementes? wenn ich z.b. eine funktion auf jedes element eines arrays ausführen will und ich das ganze mit ner schleife mache, dass ists doch im prinzip egal, weil es ja keine "toten" elemente in einem array geben kann. beispielsweise:
$liste[0] = 0;
$liste[1] = 3;
$liste[3] = 2;
das element nummer 2 wäre also undefiniert. aber wo kann sowas vorkommen?
danke,
max
achso, danke für die aufklärung, aber worin besteht der unterschied zwischen der länge eines arrays und dem index des letzten elementes? wenn ich z.b. eine funktion auf jedes element eines arrays ausführen will und ich das ganze mit ner schleife mache, dass ists doch im prinzip egal, weil es ja keine "toten" elemente in einem array geben kann. beispielsweise:
Du kannst mit $[ den Startindex verändern und dann bekommst du mit $# einen anderen Wert als mit scalar, da ersteres den Index des letzten Elementes zurückgibt und Scalar die Anzahl der Elemente.
$liste[0] = 0;
$liste[1] = 3;
$liste[3] = 2;das element nummer 2 wäre also undefiniert. aber wo kann sowas vorkommen?
Ja, aber undefiniert ist auch ein Wert, soll heißen Perl füllt den Rest des Arrays immer mit undefinierten Werten auf.
Struppi.
Hallo.
Klappt auch ohne Problem, aber es stellt sich mir die Frage, ob es dafür nicht auch eine eingebaute "Funktion" gibt!
In skalarem Kontext liefert das Array seine Länge:
$i = @array; oder
$i = scalar(@array);
$#array liefert den Index des letzten Elements der Liste.
Gruß
Norbert