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 функция, но это не доступно в функции?

11
задан Sathvik Chinnu 2 December 2016 в 06:29
поделиться

5 ответов

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

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

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

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

36
ответ дан 3 December 2019 в 01:02
поделиться

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

2
ответ дан 3 December 2019 в 01:02
поделиться

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

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

9
ответ дан 3 December 2019 в 01:02
поделиться

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

echo $path;
function createList($retval) {
    global path;
    echo $path; // works now :)
1
ответ дан 3 December 2019 в 01:02
поделиться

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

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>";    
}
0
ответ дан 3 December 2019 в 01:02
поделиться
Другие вопросы по тегам:

Похожие вопросы: