Problem mit Arrays
Tom1tk
- php
Hi,
ich hab eine "Datenbank" via Flat-Text-File als Array angelegt.
Nun möchte ich meinen Zugriff automatisieren.
$Array1=array(
array("Wert1_1","Wert1_2"),
array("Wert2_1","Wert2_2"),
array("Wert3_1","Wert3_2")
);
$array_name="Array1"; // Beispiel Array
$val1="1"; // Beispielwert
$link=$array_name."[".$val1."][1]";//Werte aus Array1 Nummer $val1 an Stelle 1
$text=$array_name."[".$val1."][0]";//Werte aus Array1 Nummer $val1 an Stelle 0
print $link."<br>"; // Gibt "Array[1][1]" aus
print $text."<br>"; // Gibt "Array[1][0]" aus
print $Array[1][0].$Array[1][1]; // Gibt "Wert2_1Wert2_2" aus
print $$link.$$text; // Gibt nix aus!!!!!!!
Eigentlich sollten die beiden letzten Zeilen doch das gleiche ausgeben, oder??
Ich dreh gleich am Rad, da ich selbiges Konstrukt schon an anderer Stelle verwende und da funktioniert es einwandfrei!
Wo steckt mein Fehler?
Vielen Dank für eure Hilfe!
Tom1tk
Hallo,
$Array1=array(
array("Wert1_1","Wert1_2"),
array("Wert2_1","Wert2_2"),
array("Wert3_1","Wert3_2")
);
Ok, passt soweit...
$array_name="Array1"; // Beispiel Array [1]
$val1="1"; // Beispielwert
$array_name wird den String "Array1" zugewiesen
$link=$array_name."[".$val1."][1]";//Werte aus Array1 Nummer $val1 an Stelle 1
$text=$array_name."[".$val1."][0]";//Werte aus Array1 Nummer $val1 an Stelle 0
Das kann IMHO so nicht funktionieren, da PHP bei parsen $array_name als String und nicht als Array erkennt. Würde mich wundern wenn das funktioniert. Du musst bei [1] dem $array_name das Array $Array1 übergeben, dann gehts. Ich glaube nicht das selbst ein Typecasting in Array hier was bringen würde. AFAIK wäre der jeweilige String als [0] im Array enthalten?
print $link."<br>"; // Gibt "Array[1][1]" aus
print $text."<br>"; // Gibt "Array[1][0]" aus
Ja, es wird $link und $text als Strings ausgegeben...
print $Array[1][0].$Array[1][1]; // Gibt "Wert2_1Wert2_2" aus
Nee, da passiert nix, $Array ist nicht definiert. Wenn dann musst Du es in $Array1[1][0] etc. ändern...
print $$link.$$text; // Gibt nix aus!!!!!!!
Schau Dir mal die Notation an -> $$... Überarbeitet? :-)
Wo steckt mein Fehler?
s.o. ;-)
Grüsse AndreD
Rehallo,
Ja, es wird $link und $text als Strings ausgegeben...
print $Array[1][0].$Array[1][1]; // Gibt "Wert2_1Wert2_2" aus
Nee, da passiert nix, $Array ist nicht definiert. Wenn dann musst Du es in $Array1[1][0] etc. ändern...
Sorry. Mein Fehler. Sollte natürlich $Array1 heißen.
Was heißt eigentlich AFAIK und IMHO? Und wie kann ich mein Problem lösen? Andi_b schrieb gerade mit eval()? Erfahrungen damit?
Greets Tom1tk
Hallo,
Was heißt eigentlich AFAIK und IMHO?
AFAIK = As Far As I Know = Soweit mir bekannt ist
IMHO = In My Humble Opinion = meiner bescheidenen Meinung nach
Mehr hier: http://pamer.net/usenet/jargon.html
Und wie kann ich mein Problem lösen? Andi_b schrieb gerade mit eval()? Erfahrungen damit?
Ja von früher mit Javascript. Da lies ich mir von erfahreren Leuten sagen: eval is evil :-) Ich hab das seit dem nicht mehr verwendet, aber habs mal im Manual nachgelesen und evt. kann man es ja mal brauchen, wobei IMHO *g* man auch auf eval() verzichten kann und das ganze auch eleganter lösen kann...
Grüsse AndreD
hey tom,
das konstrukt $$name bewirkt, dass der inhalt von $name als variablenname angesehen wird. dein inhalt ist aber keine variable, sondern ausführbarer code. in dem fall musste eval() verwenden.
print $Array[1][0].$Array[1][1]; // Gibt "Wert2_1Wert2_2" aus
print $$link.$$text; // Gibt nix aus!!!!!!!
sollte so gehen:
eval("print". $link . $text);
andi
sorry, wieder mal zu schnell gedrückt... so isses richtiger:
eval("print". $link . "." . $text);
andi
Hi Andi,
sorry, wieder mal zu schnell gedrückt... so isses richtiger:
eval("print". $link . "." . $text);
Dat geht bei mir nisch...
Hab mir grad das Manual zu eval durchgelesen. Muss ich nicht
eval($$link.$$text);
schreiben?
Geht auch nicht.
Thanx, Tom1tk
so gehts jetzt, war noch ein tippfehler bei Array1:
$array_name="$Array1"; // Beispiel Array
$val1="1"; // Beispielwert
$link=$array_name."[".$val1."][1]";//Werte aus Array1 Nummer $val1 an Stelle 1
$text=$array_name."[".$val1."][0]";//Werte aus Array1 Nummer $val1 an Stelle 0
print $link."<br>"; // Gibt "Array[1][1]" aus
print $text."<br>"; // Gibt "Array[1][0]" aus
print ($Array1[1][0] . $Array1[1][1]); // Gibt "Wert2_1Wert2_2" aus
eval("print" . $link . "." . $text . ";");
andi