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?

Sathvik C
6121 gold badge9 silver badges23 bronze badges
asked Jun 14, 2010 at 21:43
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.

answered Jun 14, 2010 at 21:54
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 :).

answered Jun 14, 2010 at 21:45
2

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

answered Jun 14, 2010 at 21:46
1

you must use the global modifier.

echo $path;
function createList($retval) {
 global path;
 echo $path; // works now :)
answered Jun 14, 2010 at 21:45
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>"; 
}
answered Jun 14, 2010 at 21:49
0

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

dippas
60.8k15 gold badges125 silver badges133 bronze badges
answered Apr 5, 2022 at 10:41

Your Answer

Draft saved
Draft discarded

Sign up or log in

Sign up using Google
Sign up using Email and Password

Post as a guest

Required, but never shown

Post as a guest

Required, but never shown

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.