2008-10-28 10 views
7

zu deklarieren Ich habe eine Variable, die in Schleife eingebaut ist. Etwas wie:PHP: Richtiger Weg, Variable vor der Verwendung in Schleife

$str = ""; 
for($i = 0; $i < 10; $i++) $str .= "something"; 

Wenn $ str = „“ weggelassen wird, erhalte ich nicht definierte Variable Hinweis, aber ich dachte, PHP Auto-deklarieren eine Variable zum ersten Mal es eine nicht deklarierte sieht?

Wie mache ich das richtig?

Antwort

14

Sie erhalten die undefinierte Variable, weil Sie den Wert von sich selbst mit einem anderen Wert verketten.

Das Äquivalent

$str = $str . "something";

So kann es nicht sagen, was der Anfangswert ist ist. Es ist das Äquivalent dafür:

$str = [undefined value] . "something";

Was ist das Ergebnis einer Verkettung von [undefined value] und "something"? Der Interpreter kann nicht sagen ...

Also, Sie müssen "" in die Variable zuerst setzen, um den Wert der Variablen einzuleiten, wie Sie taten.

HTH

+0

Ich vermutete, dass der variable Bereich auch für Loops gilt, aber ja, du hast genau das Gleiche passiert und ich verstehe jetzt den Grund. +1 – Tarik

4

Es ist sicherer, die Auto-declare Funktion nutzen zu können - das ist, warum es eine Mitteilung herausgibt. Eine Benachrichtigung ist die niedrigste Warnstufe und wird nicht standardmäßig angezeigt. Die meisten älteren PHP-Apps werden viele Benachrichtigungen ausgeben, wenn Sie sie aktivieren.

8

Wenn Sie es wirklich es sauberer müssen, damit Sie tun können:

for($i = 0, $str = ''; $i < 10; $i++) $str .= "something"; 

Aber das, was Sie ist das, was normalerweise tue ich. vlceBerg erklärt es gut.

+1

Nur ein Gedanke ... können Sie das tun: für ($ i = 0, $ str = ''; $ i <10; $ i ++, $ str. = "Etwas"); ? Ich habe gerade keine PHP-Box zum Testen .... – vIceBerg

+1

Offenbar ja: zsh% echo ' '| php somewhingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomethingsomething –

+0

Yep vlceBerg - Sie brauchen nicht einmal den Loop-Inhalt. Ich finde es einfacher, den Inhalt zu verstehen, aber da es eine Zeile ist, die Sie nicht brauchen. – Ross

2

PHP-Variablen, die automatisch deklariert werden, werden als undefiniert registriert, weshalb Sie die Benachrichtigung erhalten.

Es ist im Allgemeinen besser, PHP-Variablen vor der Verwendung zu deklarieren, obwohl viele der Faulen unter uns, mich eingeschlossen, nicht immer das tun.