PHP: variabile che non funziona all'interno della function?

echo $path; //working function createList($retval) { echo $path; //not working print "<form method='POST' action='' enctype='multipart/form-data'>"; foreach ($retval as $value) { print "<input type='checkbox' name='deletefiles[]' id='$value' value='$value'>$value<br>"; } print "<input class='submit' name='deleteBtn' type='submit' value='Datei(en) löschen'>"; print "</form>"; } 

Che cosa sto facendo di sbagliato? perché $ path viene printingto correttamente al di fuori della function createList , ma non è accessibile all'interno della function?

Perché non è definito nella function.

Ci sono alcuni modi per farlo:

1) Usa quello che Alex ha detto dicendo alla function che è una variabile globale:

 echo $path; // working function createList($retval) { global $path; echo $path; // working 

2) Definirlo come una costante:

 define(PATH, "/my/test/path"); // You can put this in an include file as well. echo PATH; // working function createList($retval) { echo PATH; // working 

3) Passalo nella function se è specifico per quella function:

 echo $path; // working function createList($retval, $path) { echo $path; // working 

Sulla base di come la function funziona davvero per te, una di queste ti farà.

/ JP

Se si desidera che funzioni, è necessario utilizzare global $path nella function, in modo che esuli dall'ambito della function.

Si prega di notare che le variables globali vengono inviate dall'inferno :).

Causa $path all'interno di createList() e al di fuori di esso (nell'ambito globale) sono due variables diverse. Maggiori informazioni sull'ambito delle variables in PHP .

devi usare il modificatore globale.

 echo $path; function createList($retval) { global path; echo $path; // works now :) 

In alternativa all'utilizzo di una variabile globale, passa semplicemente $path in. Ovviamente, se non hai bisogno della variabile all'interno della function, non preoccuparti!

 echo $path; function createList($retval, $path) { echo $path; print "<form method='POST' action='' enctype='multipart/form-data'>"; foreach ($retval as $value) { print "<input type='checkbox' name='deletefiles[]' id='$value' value='$value'>$value<br>"; } print "<input class='submit' name='deleteBtn' type='submit' value='Datei(en) löschen'>"; print "</form>"; }