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
函数之外正确打印,但在函数内部无法访问?
答案 0 :(得分:32)
有几种方法可以解决这个问题:
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
根据功能如何运作,其中一个会做你的。
答案 1 :(得分:9)
如果你想让它工作,你应该在函数中使用global $path
,因此它看起来不在函数范围内。
请注意全局变量是从地狱发送的:)。
答案 2 :(得分:2)
原因$path
在createList()
内,在它之外(在全局范围内)是两个不同的变量。详细了解variable scope in PHP。
答案 3 :(得分:1)
您必须使用全局修饰符。
echo $path;
function createList($retval) {
global path;
echo $path; // works now :)
答案 4 :(得分:0)
作为使用全局变量的替代方法,只需传递$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>";
}