| PHP Developer Forum Hier habt ihr die Möglichkeit, eure Skriptprobleme mit anderen Anwendern zu diskutieren. Seid so fair und beantwortet auch Fragen von anderen Anwendern. Dieses Forum ist sowohl für ANFÄNGER als auch für PHP-Profis! Post your PHP questions here! |
 |

04-07-2009, 12:44
|
|
ZuLtAn
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Ort: Oldenburg
Beiträge: 104
|
|
variable arrays
Hallo zusammen,
ich habe Probleme mit folgendem Code:
PHP-Code:
$walze1=array('1','6','11'); $walze2=array('2','7','12'); $walze3=array('3','8','13'); $walze4=array('4','9','14'); $walze5=array('5','10','15');
....
$walze='walze'.$akt_walze; for ($x=0;$x<=2;$x++){ $var="feld".$$walze[$x]; ...
Ich habe zuvor einige arrays definiert, mit Namen walze1, walze2, usw.
Leider ist $$walze[$x] leer, $$walze ergibt aber wie gewünscht die ausgabe array.
Es war doch irgendwie so, das man beim aufruf des arrays noch geschweifte Klammern einsetzen muss ? Habe ich auch probiert, gibt aber immer parse Fehler...z.B. geht $$walze[{$x}] oder $$walze[{$}x] auch nicht....
Wie muss ich das aufrufen damit es geht?
Gruss
__________________
-=Es gibt Leute, die können Ihren Stammbaum bis zu denen zurückverfolgen, die noch darauf saßen=-
|

04-07-2009, 12:56
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von ZuLtAn
Ich habe zuvor einige arrays definiert, mit Namen walze1, walze2, usw.
|
Mach daraus ein Array mit mehreren Dimensionen.
"Variable Variablen" sind fast immer überflüssig, und besser mit Arrays als Datenstruktur umzusetzen.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

04-07-2009, 13:02
|
 |
onemorenerd
 Moderator
|
|
Registriert seit: Mar 2005
Ort: Berlin
Beiträge: 9.481
|
|
Die Klammern sind an der falschen Stelle.
PHP: Variable variables - Manual
$var = "feld" . ${$walze[$x]};
ergibt bei $x = 0 zum Beispiel
$var = "feld" . $1;
und das ist Blödsinn, denn eine Variable namens 1 kann es nicht geben. Variablennamen müssen mit einem Buchstaben oder Unterstrich beginnen.
Edit: Ich habe den Trick mit $akt_walze übersehen. Das machts ja ganz schlimm!
Du willst vermutlich das hier:
$var = "feld" . ${{$walze}[$x]};
Falls das überhaupt funktioniert - bin mir nicht sicher ob man die Klammern schachteln kann - versteht das kein Mensch.
Ein Grund auf variable Variablen zu verzichten ist übrigens, dass man sie kaum vernünftig debuggen kann.
Geändert von onemorenerd (04-07-2009 um 13:08 Uhr)
|

04-07-2009, 13:03
|
|
ZuLtAn
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Ort: Oldenburg
Beiträge: 104
|
|
OK danke. Aber es interessiert mich schon, wie man auf diese Art denn jetzt auf die arrayindexes zugreifen kann...$$walze gibtr mir ja schon arrayaus,nur auf den arrayinhalt kann ich so $$walze[$x] nicht zugreifen...wie wäre dies denn möglich ?
Edit: danke
__________________
-=Es gibt Leute, die können Ihren Stammbaum bis zu denen zurückverfolgen, die noch darauf saßen=-
|

04-07-2009, 13:18
|
|
ZuLtAn
Registrierter Benutzer
|
|
Registriert seit: Jan 2002
Ort: Oldenburg
Beiträge: 104
|
|
Zur Erklärung:
Der Code ist Teil einer Slotmachine. Diese hat 15 Felder, verteilt auf 5 Walzen. Zu jeder Walze gehören 3 Felder, z.B. Walze 1 eben Feld 1,6 und 11.
...in den Arrays walze1,walze2 usw.sind Feldnamen gespeichert. Ausserdem habe habe variablen namens $feld1, $feld2 etc. definiert.
Bei der Ausgabe der Symbole möchte ich feststellen, ob ein Symbol eben auf der aktuellen Walze bereits vorhanden ist, denn jedes Symbol darf auf einer Walze nur einmal vorkommen. Das wollte ich eben durch variable Variablen lösen, da ich weder weiß, auf welcher Walze ich mich befinde,noch welches Symbol vergeben wird, noch auf welchem Feld....
__________________
-=Es gibt Leute, die können Ihren Stammbaum bis zu denen zurückverfolgen, die noch darauf saßen=-
|

04-07-2009, 13:23
|
wahsaga
 Moderator
|
|
Registriert seit: Sep 2001
Beiträge: 24.486
|
|
Zitat:
Zitat von ZuLtAn
...in den Arrays walze1,walze2 usw.sind Feldnamen gespeichert. Ausserdem habe habe variablen namens $feld1, $feld2 etc. definiert.
|
Nutze für beides Arrays.
Zitat:
|
Bei der Ausgabe der Symbole möchte ich feststellen, ob ein Symbol eben auf der aktuellen Walze bereits vorhanden ist, denn jedes Symbol darf auf einer Walze nur einmal vorkommen. Das wollte ich eben durch variable Variablen lösen, da ich weder weiß, auf welcher Walze ich mich befinde,noch welches Symbol vergeben wird, noch auf welchem Feld....
|
Da machen dir variable Variablen die Arbeit kein bisschen leichter, als Arrays.
Für's Array brauchst du einen Index, und für deine variablen Variablen auch eine Zahl, die du anhängen kannst - wenn du also (angeblich) "gar nichts" weisst, wären letztere auch nicht hilfreicher; dann müsstest du sowieso in einer Schleife alle Möglichkeiten durchlaufen - und auch das ist mit Arrays einfacher und simpler, als mit variablen Variablen.
Dass variablen Variablen überhaupt existieren, vergiss bitte.
__________________
I don't believe in rebirth. Actually, I never did in my whole lives.
|

04-07-2009, 15:05
|
|
h3ll
Registrierter Benutzer
|
|
Registriert seit: Mar 2008
Beiträge: 2.328
|
|
Verzichte auf variable Variablen.
PHP-Code:
$walze = array( array(1, 6, 11), array(2, 7, 12), array(3, 8, 13), array(4, 9, 14), array(5, 10, 15) );
Warum schreibst du Zahlen eigentlich in Hochkomma?
Du kannst das Array übrigens auch mit einer Schleife erzeugen:
PHP-Code:
$walze = array(); foreach (range(1, 15) as $x) { $walze[($x - 1) % 5][] = $x; }
Geändert von h3ll (04-07-2009 um 15:11 Uhr)
|
|
Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
|
|
|
| Themen-Optionen |
|
|
| Thema bewerten |
|
|
Forumregeln
|
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.
HTML-Code ist aus.
|
|
|
|
PHP News
|