PHP:变量在函数内部不起作用?

2022-08-30 23:57:35
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

因为它没有在函数中定义。

有几种方法可以做到这一点:

1)使用Alex所说的,告诉函数它是一个全局变量:

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
}

根据该功能的实际工作原理,其中一个将执行yya。


答案 2

如果希望它工作,则应在函数中使用,以便它看起来超出了函数范围。global $path

请注意,全局变量是从地狱:)发送的。


推荐