开发者

PHP: variable not working inside of function?

开发者 https://www.devze.com 2023-01-03 23:11 出处:网络
echo $path; //working function createList($retval) { echo $path; //not working print \"<form method=\'POST\' action=\'\' enctype=\'multipart/form-data\'>\";
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>";    
}

what am I doing wrong? why is $path printed correctly outside of the createList fu开发者_如何学Gonction, but it's not accessible inside the function?


Because it's not defined in the function.

There are a few ways to go about this:

1) Use what Alex said by telling the function it is a global variable:

echo $path; // working

function createList($retval) {
  global $path;

  echo $path; // working
}

2) Define it as a constant:

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) Pass it into the function if it's specific to that function:

echo $path; // working

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

Based on how the function really works, one of those will do ya.


If you want it to work, you should use global $path in the function, so it looks outside the function scope.

Please note that global variables are sent from hell :).


Cause $path inside createList() and outside it (in global scope) are two different variables. Read more about variable scope in PHP.


you must use the global modifier.

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


As an alternative to using a global variable, just pass $path in. Of course, if you don't need the variable inside the function, don't bother!

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


Just use $GLOBALS['your variable name'] and use it anywhere in your function

0

精彩评论

暂无评论...
验证码 换一张
取 消