Variablen Deklaration
am 10.11.2006 12:36:38 von Marcel Polty
Hallo,
ich lade Text aus einer Datenbank, und die Variablen in denen der Text
steht kommt ebenfalls aus der Datenbank
Beispiel:
In der Datenbank steht:
var | text
name | Meier
In dieser Schleife übergebe ich dann den Variablen-Namen und den
Inhalt:
for ($i=0; $i<$anz; $i++)
{
$var = $inhalt[$i]["var"];
$$var = $inhalt[$i]["text"];
}
Mit $$var bekomme ich dann var1 als Variable $name.
Echo $name: "Meier"
Soweit so gut.
Um das ganze jetzt regelkonform zum machen müsste ich jede Variable
die ich aus der Datenbank auslese vorher deklarieren. Es können unter
Umständen sehr viele Variablen sein. Deshalb ist das eine wahnsinns
Arbeit, fehleranfällig und bläht das Script auf.
Meine Frage ist nun, kann ich die Variable $$var1 nicht innerhalb der
Schleife noch als $$var deklarieren.
So habe ich es versucht:
for ($i=0; $i<$anz; $i++)
{
$var = $inhalt[$i]["var"];
$$var = ""; <<<<< So geht es leider nicht.
$$var = $inhalt[$i]["text"];
}
Das funktioniert aber nicht. Ich bekomme danach von dem Code-Analyzer
von Zend Studio immer noch angezeigt das die Variable vor Ihrer
Deklaration benutzt wird.
Hat jemand eine Idee wie man das machen kann?
Oder übertreibt hier der Zend-Code-Analyzer und ich kann das
ignorieren?
Vorab schon mal ein Dankeschön
Gruß Marcel
Re: Variablen Deklaration
am 10.11.2006 12:56:42 von Niels Braczek
Marcel Polty schrieb:
> Um das ganze jetzt regelkonform zum machen müsste ich jede Variable
> die ich aus der Datenbank auslese vorher deklarieren.
Mal ganz davon abgesehen, dass variable Variablen böse[tm] sind, kennt
PHP keine Variablen-Deklaration.
> Es können unter
> Umständen sehr viele Variablen sein. Deshalb ist das eine wahnsinns
> Arbeit, fehleranfällig und bläht das Script auf.
Die Fehleranfälligkeit kommt von den varVars.
> [[Zweifache Zuweisung]]
> Das funktioniert aber nicht. Ich bekomme danach von dem Code-Analyzer
> von Zend Studio immer noch angezeigt das die Variable vor Ihrer
> Deklaration benutzt wird.
>=20
> Hat jemand eine Idee wie man das machen kann?
Mache es richtig[tm].
$localVars =3D array();
$localVars[$inhalt[$i]['var']] =3D $inhalt[$i]['text'];
> Oder übertreibt hier der Zend-Code-Analyzer und ich kann das
> ignorieren?
Ja.
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Variablen Deklaration
am 10.11.2006 15:22:15 von Marcel Polty
Hallo Niels,
Niels Braczek schrieb:
>Mal ganz davon abgesehen, dass variable Variablen böse[tm] sind, kennt
>PHP keine Variablen-Deklaration.
Ich frage nur zu meinem Verständnis, warum sind variable Variablen
"böse"? Bisher habe ich mir nichts schlimmes dabei gedacht sie zu
verwenden.
>> Es können unter
>> Umständen sehr viele Variablen sein. Deshalb ist das eine wahnsinns
>> Arbeit, fehleranfällig und bläht das Script auf.
>
>Die Fehleranfälligkeit kommt von den varVars.
Bisher sind keine Fehler drin, es läuft soweit alles bestens.
Ich vermute aber das beim deklarieren hunderter Variablen zu Fehler
kommen wird. Zumal die Variablen auch noch innerhalb der Seite
wechseln können.
>> Hat jemand eine Idee wie man das machen kann?
>
>Mache es richtig[tm].
Ja, das habe ich immer vor ;-) Die Frage ist halt manchmal, wie man es
richtig macht.
>$localVars = array();
>
>$localVars[$inhalt[$i]['var']] = $inhalt[$i]['text'];
Das funktioniert so wie mein Beispiel auch, aber die Zend Meldungen
verschwinden dadurch auch nicht.
Auch wieder zu meinem Verständnis: Warum ist Dein Beispiel richtig?
>> Oder übertreibt hier der Zend-Code-Analyzer und ich kann das
>> ignorieren?
>
>Ja.
tja, dann...(könnte ich ja eigentlich alles so lassen wie es ist)
Danke Dir NIels
Gruß Marcel
Re: Variablen Deklaration
am 10.11.2006 15:38:10 von Niels Braczek
Marcel Polty schrieb:
> Niels Braczek schrieb:
>=20
>>Mal ganz davon abgesehen, dass variable Variablen böse[tm] sind, kenn=
t
>>PHP keine Variablen-Deklaration.
> Ich frage nur zu meinem Verständnis, warum sind variable Variablen
> "böse"? Bisher habe ich mir nichts schlimmes dabei gedacht sie zu
> verwenden.
Weil du nicht sicher sein kannst, welche Variable du dir da in den
Namensraum (Scope) holst. Es könnten Variable überschrieben werden, a=
uf
deren Inhalte du dich verlässt. Du gibst unnötig Kontrolle auf.
>>Die Fehleranfälligkeit kommt von den varVars.
> Bisher sind keine Fehler drin, es läuft soweit alles bestens.
> Ich vermute aber das beim deklarieren hunderter Variablen zu Fehler
> kommen wird. Zumal die Variablen auch noch innerhalb der Seite
> wechseln können.
Nein, das würde nichts ausmachen.
>>$localVars =3D array();
>>$localVars[$inhalt[$i]['var']] =3D $inhalt[$i]['text'];
> Das funktioniert so wie mein Beispiel auch, aber die Zend Meldungen
> verschwinden dadurch auch nicht.
Dann ist die Zend-Meldung falsch, sofern sie sich auf $localVars bezieht.=
> Auch wieder zu meinem Verständnis: Warum ist Dein Beispiel richtig?
Du hast die neuen 'Variablen' in einer geschützten Umgebung, dem Array.=
Dadurch können die dir nichts kaputt machen.
MfG
Niels
--=20
| http://www.kolleg.de =B7 Das Portal der Kollegs in Deutschland |
| http://www.bsds.de =B7 BSDS Braczek Software- und DatenSysteme |
| Webdesign =B7 Webhosting =B7 e-Commerce =B7 Joomla! Content Management =
|
------------------------------------------------------------ ------
Re: Variablen Deklaration
am 10.11.2006 16:30:58 von Moser Ludwig
um zu überprüfen ob ne variable schon gesetzt ist... kann man isset
verwenden
folgendes konstrukt schaut ob eine variable shon gesetzt ist
falls diese gesetzt ist, wird der zweite wert verwendet, sonst setzt man
wert nummer drei
$value= isset($value1) ? $value2 : $value3;
"Marcel Polty" wrote in message
news:gqn8l21uco39htbjvbi6mk711on90u045h@4ax.com...
> Hallo,
>
> ich lade Text aus einer Datenbank, und die Variablen in denen der Text
> steht kommt ebenfalls aus der Datenbank
> Beispiel:
>
> In der Datenbank steht:
> var | text
> name | Meier
>
> In dieser Schleife übergebe ich dann den Variablen-Namen und den
> Inhalt:
> for ($i=0; $i<$anz; $i++)
> {
> $var = $inhalt[$i]["var"];
> $$var = $inhalt[$i]["text"];
> }
>
> Mit $$var bekomme ich dann var1 als Variable $name.
> Echo $name: "Meier"
>
> Soweit so gut.
>
> Um das ganze jetzt regelkonform zum machen müsste ich jede Variable
> die ich aus der Datenbank auslese vorher deklarieren. Es können unter
> Umständen sehr viele Variablen sein. Deshalb ist das eine wahnsinns
> Arbeit, fehleranfällig und bläht das Script auf.
>
> Meine Frage ist nun, kann ich die Variable $$var1 nicht innerhalb der
> Schleife noch als $$var deklarieren.
>
> So habe ich es versucht:
>
> for ($i=0; $i<$anz; $i++)
> {
> $var = $inhalt[$i]["var"];
> $$var = ""; <<<<< So geht es leider nicht.
> $$var = $inhalt[$i]["text"];
> }
>
> Das funktioniert aber nicht. Ich bekomme danach von dem Code-Analyzer
> von Zend Studio immer noch angezeigt das die Variable vor Ihrer
> Deklaration benutzt wird.
>
> Hat jemand eine Idee wie man das machen kann?
> Oder übertreibt hier der Zend-Code-Analyzer und ich kann das
> ignorieren?
>
> Vorab schon mal ein Dankeschön
>
> Gruß Marcel