Perl : mehrdimensionales array getSize();

N

Nano

Foren As
Hi gibt es eine möglichkeit die "länge" und "breite" eines 2dimensinalen arrays nur anhand der @matrix selbst auszugeben ?

in der form $breite = $#matrix[][]
bzw $länge = $#matrix

Als alternative wüsste ich nur einen durchlauf mit 2 countern.


Code:
foreach my $ref_zeile (@matrix) {
 
                  $x++;

                 foreach my $spalte (@$ref_zeile) { 
                             
                             $y++

                 }

}

$y = $y/$x;
 
Zuletzt bearbeitet:
also dir ist schon klar, dass das nur referenzen auf weitere arrays sind, die da in deinem "matrix" array drinstecken, oder? weil du hast dadurch nicht zwangsläufig konsistente dimensionen. $matrix[0] kann ja eine referenz auf ein array mit 4 items und $matrix[1] eine auf ein array mit 123 items haben etc.

ANYWHO, angenommen die dimension ist mindestens 1,1, ließe sich das einfach so machen:
PHP:
my @matrix = (  [0, 2],
                [2, 4],
                [2, 5] );

my $laenge = $#matrix;
my $breite = $#{$matrix[0]};
wobei das natürlich auch nicht die wirkliche länge respektive breite wäre, sondern der index des letzten items, also länge - 1 bzw breite - 1.

[edit]: btw, bei solch "einfachen" fragen lohnt es sich auch oft mal einfach in #perl auf irc.freenode.net vorbeizuschauen.
 
ja danke das war das was ich wissen wollte, werde mir irc mal wieder draufmachen danke für den tip, hatte im netz nichts brauchbares gefunden eventuel war meine suche auch etwas umständlich formuliert ;)

das mit den referenzen ist mir bewusst aber es gibt ja auch anonyme referenz, daher die frage ob es ( diese konsistenz vorausgesetzt ) geht
 

Ähnliche Themen

[PHP] Checkboxen-Auswahl + dazugehörige Werte in Array

in_array Problem

Probs mit Perl script

perl : geht es auch einfacher ?

C Programm unter Unix

Zurück
Oben