PHP: переменная не работает внутри функции?

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>"; } 

Что я делаю не так? почему $ path напечатан правильно вне функции createList , но он недоступен внутри функции?

Потому что это не определено в функции.

Есть несколько способов сделать это:

1) Используйте то, что сказал Алекс, сообщив функции, что это глобальная переменная:

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

2) Определите его как константу:

 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) Передайте его в функцию, если она специфична для этой функции:

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

Основываясь на том, как функция действительно работает для вас, один из них сделает вас.

/ JP

Если вы хотите, чтобы он работал, вы должны использовать global $path в функции, поэтому он выходит за пределы области действия.

Обратите внимание, что глобальные переменные отправляются из ада :).

Причина $path внутри createList() и вне его (в глобальной области) – это две разные переменные. Подробнее о области переменных в PHP .

вы должны использовать глобальный модификатор.

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

В качестве альтернативы использованию глобальной переменной просто передайте $path in. Конечно, если вам не нужна переменная внутри функции, не беспокойтесь!

 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>"; }