2011-09-07 22 views
7

Pequeño problema con respecto al alcance en PHP, no puedo llamar a la variable $ informe fuera del ciclo while. He intentado varias cosas, incluso return. Esto no funciona, las dos únicas funciones que funcionan aquí son si I echo la variable $report dentro del ciclo, o si I print. Lo cual no quiero hacer, aunque resuelve el problema, pero no quiero un galimatías aleatorio en la pantalla del usuario.Usando una variable fuera del ciclo while (alcance)

He estado buscando los últimos 15 minutos aproximadamente, y no he visto ningún problema como este aquí.

Cualquier ayuda sería apreciada.

<? 
require "functions2.php"; 
require "members.php"; 
$query = "SELECT MAX(DOCid) as prevDOCid from reports"; 
$result = mysql_query($query); 

while ($row = mysql_fetch_array($result)) { 
    $prevDOCid = $row[prevDOCid]; 

$thisDOCid = $prevDOCid+1; 
$report = "a"."b".$thisDOCid; 


} 
echo $report; 
?> 
+0

si está ing eco informe $ interior, mientras que bucle, se puede conseguir cualquier op? – mithunsatheesh

+2

PHP realmente no tiene un concepto de alcance como, por ejemplo, Java donde esto sería un problema. Si '$ report' no se declara antes de llegar a la instrucción' echo', supongo que PHP nunca entra en el ciclo 'while' en primer lugar. – NullUserException

+0

Hmm, bueno, no está funcionando. Obviamente, no estoy tratando de hacerme eco del informe $, solo estoy publicando el código de esta manera por simplicidad. La única forma en que puedo usar la variable fuera del ciclo es si hago eco primero. –

Respuesta

10

Puede intentar definir la variable antes del ciclo, p.

$report = ""; 
while ($row = mysql_fetch_array($result)) { 
    $report .= "a"."b".$row["prevDOCid"]+1; 
} 
echo $report; 

Espero que esto te ayude!

Editar uso. = No + =

+0

Sí resolvió el problema perfectamente. Supongo que las variables pueden tomar nuevos valores en el ciclo, y retenerlos fuera de él, pero no pueden definirse dentro de él. ¡Muchas gracias! –

+4

@RVward Estás equivocado. * Pueden * declararse en el ciclo y usarse fuera de él. Aquí está [prueba] (http://codepad.org/508BRBCi). La diferencia es que esto concatena nuevos valores a '$ report', en lugar de sobrescribirlo con cada iteración del ciclo. – NullUserException

+0

@NullUserException ese código funciona allí, pero incluso cuando trato de hacer eco de $ prevDOCid, no hace nada excepto dar la variable indefinida. No estoy seguro de lo que quiere que haga, lo único que resolvió el problema fue esta respuesta. –

Cuestiones relacionadas