17
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 function, but it's not accessible inside the function?

1
  • Where is $path defined? Is it defined as global $path? Commented Jun 14, 2010 at 21:44

6 Answers 6

52

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.

Sign up to request clarification or add additional context in comments.

Comments

10

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 :).

Comments

2

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

Comments

1

you must use the global modifier.

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

Comments

0

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

Comments

0

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

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.