2008-10-28 32 views
7

Tengo una variable que está incorporada en el ciclo. Algo así como:PHP: forma correcta de declarar la variable antes del uso en el ciclo

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

Si $ cadena = "" se omite, que recibió el aviso variable no definida, pero pensé php auto-declarar una variable de la primera vez que ve no declarado uno?

¿Cómo hago esto bien?

Respuesta

14

Obtiene la variable indefinida porque concatena el valor de sí mismo con otro valor.

El equivalente de

$str = $str . "something";

Por lo tanto, no se puede decir cuál es el valor inicial es. Es el equivalente a esto:

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

¿Cuál es el resultado de una concatenación de [undefined value] y "something"? El intérprete no puede decir ...

Entonces, primero debe poner "" en la variable para iniciar el valor de la variable, como lo hizo.

HTH

+0

Supongo que el alcance variable también se aplica a los bucles también, pero sí tiene razón, me pasó lo mismo y ahora entiendo la razón. +1 – Tarik

4

Es más seguro no utilizar la función de auto-declarar - por eso se emite un aviso. Un aviso es el nivel más bajo de advertencia y no se mostrará de forma predeterminada. La mayoría de las aplicaciones PHP anteriores emitirán muchos avisos si los activara.

8

Si realmente necesita para que sea un producto de limpieza que se podía hacer:

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

Pero lo que tienes es lo que hago normalmente. vlceBerg lo explica bien.

+1

Solo un pensamiento ... puede hacer esto: for ($ i = 0, $ str = ''; $ i <10; $ i ++, $ str. = "Algo"); ? No tengo un cuadro de PHP ahora mismo para probar ... – vIceBerg

+1

Aparentemente sí: zsh% echo ' '| php somethingsomethingsomethingsomethingsomethingsomethingsomethingsomething –

+0

Yep vlceBerg - ni siquiera necesita el contenido del bucle. Me resulta más fácil comprender el uso del contenido, pero dado que es una línea, no es necesario. – Ross

2

Las variables de PHP que se declaran automáticamente están registradas como indefinidas y es por eso que está recibiendo el aviso.

Por lo general, es mejor declarar las variables de PHP antes de usarlas, aunque muchos de los flojos entre nosotros, yo mismo incluido, no siempre lo hago.

Cuestiones relacionadas