PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Mehrdimensionales Array


kleinewe
04.03.2002, 11:16:09
Hallo ,

ich habe eine DB-Tabelle, die ausgelesen wird und pro Zeile und Zelle eine Variable anfügt , um die Zellen später wieder identifizieren zu können.

Bsp.:
Zeile1: Name1, Serial1, Desc1
Zeile2: Name2, Serial2, Desc2

Diese Daten sollen dann in ein Array geschrieben werden und als
Sessionvariable gespeichert werden.

Die übergebenen Variablen lese ich mit der Funktion:

for($i=1; $i < $row; $i++){
$GLOBALS["Name${i}"]
}

aus und möchte sie dann in ein Array übertragen:

$prod_array[$i] = array($GLOBALS["Name${i}"],$GLOBALS["Serial.${i}"],$GLOBALS["Desc${i}"]);

Stimmt diese Array-Funktion überhaupt???

Bei der Registrierung der Variablen $prod_array steht in der Session: !prod_array| .

Gibt es eine Begrenzung für Sessionelemente ???

Für eine Hilfe wäre ich sehr dankbar !!!

Gruß kleinewe

kleinewe
05.03.2002, 10:39:37
Hallo

ich habe mein Problem mittlerweile selbst gelöst.
Es war einerseits eine falsche Array-Funktion, andererseits ein Denkfehler.

Die Daten werden mit folgendem Statement in das Array geschrieben:

$body_array[] = array("$i" => array($GLOBALS["Name${i}"],$GLOBALS["Serial${i}"],$GLOBALS["Desc${i}"]);

und können folgendermassen ausgelesen werden.

if(isset($body_array)){
for($i=0; $i < $row ;$i++){
for($j=0;$j < 3; $j++){

echo "wert $i.$j:".$body_array[$i][$i][$j]."<br>";
}
}
}

Vielleicht weiss jemand eine bessere/einfachere Möglichkeit ??!

Gruss kleinewe

Matthias
06.03.2002, 16:51:27
Hmmm.

Ich hätte da ein paar Fragen.
Vielleicht lerne ich ja auch noch was ;)))

Was hat es mit der geschweiften Klammer auf sich??
z.B. ${i}

und hierbei

$body_array[$i][$i][$j]

ist dir doch sicherlich ein schreibfehler untergekommen??

Matthias

kleinewe
07.03.2002, 10:12:57
Hallo Matthias,

1.)
das Problem ist, auf Variablen mit variablen Namensattributen zuzugreifen, d.h. ich habe eine unbekannte Anzahl von Variablen
und kennzeichne diese fortlaufend (in einer Schleife) mit dem Attribut $i . In diesem Fall sind es Daten aus einer Produkttabelle, die einzelnen Vertragsnummern zugeordnet sind.

Ich könnte diese Daten jedesmal aus der Tabelle auslesen und wieder hineinschreiben, aber ich möchte vorher auf die Daten Plausibilitätschecks vornehmen und erst dann zurückschreiben.

Somit halte ich die Variablen in einem Array gespeichert.
Um die Variablen in der richtigen Reichenfolge in das Array zu speichern, greife ich auf die Möglichkeit zurück diese mit dem Namen anzusprechen. Nur ist dies, soweit ich weiss, nicht über die Variante '$namen$i' möglich.

$GLOBALS["namen${i}"] ist aber ein Konstrukt, welches dies erlaubt. Ich weis nicht, ob es guter Programmierstil ist, Variablen über $GLOBALS anzusprechen, aber es erschien mir sinnvoll.

2.)
Das Auslesen aus dem Array:

$body_array[] = array("$i" => array($GLOBALS["Name${i}"],$GLOBALS["Serial${i}"],$GLOBALS["Desc${i}"]);

Mir war es nur möglich die Daten über :

echo $body_array[$i][$i][$j;

anzusprechen. D.h.

erste Datenreihe, erster Wert : 000
erste Datenreihe, zweiter Wert : 001
zweite Datenreihe, erster Wert : 110
zweite Datenreihe, zweiter Wert : 111 .

echo $body_array[$i][$j] hat nicht funktioniert.


Falls es für $body_array[] etwas besseres gibt, wäre ich natürlich sehr dankbar, dies zu erfahren.

Gruss kleinewe