Frage zu PHP-Variablen
peschels
- php
Hallo zusammen,
ich habe eine (für die meisten wahrscheinlich einfache) Frage:
$i = 11;
$tmp = "$row->s_"; // 1.
$tmp.=$i;
echo $tmp;
echo $row->s_11; // 2.
Warum ist das Ergebnis nicht identisch? Bzw. wie schaffe ich es, einen dynamischen Zugriff auf meine Datenbank zu erstellen?
Zur Erläuterung:
In der Datenbank steht unter $row->s_11 ein name, als Ergebnis bekomme ich bei der 1.) Variante eine integer-Zahl, bei Variante 2) jedoch das gewünschte ergebnis.
Danke schonmals für eure Hilfe.
Gruß peschels
Hi,
In der Datenbank steht unter $row->s_11 ein name, als Ergebnis bekomme ich bei der 1.) Variante eine integer-Zahl,
Stelle bitte das error_reporting vernünftig ein (E_ALL & display_errors auf 1).
bei Variante 2) jedoch das gewünschte ergebnis.
Schön, dann nimm die.
MfG ChrisB
Hi!
ich habe eine (für die meisten wahrscheinlich einfache) Frage:
Nein, das ist schon ein wenig kniffliger.
$i = 11;
$tmp = "$row->s_"; // 1.
$tmp.=$i;
echo $tmp;echo $row->s_11; // 2.
>
> Warum ist das Ergebnis nicht identisch?
Betreibe Debugging! Stell das error\_reporting auf E\_ALL (und display\_errors auf on) - das sollte man beim Entwicklen immer haben. Du bekommst dann eine ansonsten nicht angezeigt Notice wegen "Undefined property ... s\_". Beachte die Unterschiede bei der Variablennamenbehandlung innerhalb von ""- und ''-Strings. Wenn du mit var\_dump($tmp) das Ergebnis der ersten Zeile überprüfen würdest, könntest du sehen, dass in $tmp nur ein Leerstring abgelegt ist. Dem den Inhalt von $i hinzuzufügen ergibt "11".
> Bzw. wie schaffe ich es, einen dynamischen Zugriff auf meine Datenbank zu erstellen?
Mit so genannten variablen Variablen bekommst du das auch mit Objekten hin.
$tmp = 's\_' . $i;
echo $row->$tmp; // beachte das zweite $
Alternativ ginge es wie folgt, wenn du nicht Objekte sondern Arrays fetchen würdest.
$key = 's\_' . $i;
echo $row[$key];
oder
echo $row['s\_' . $i];
Lo!