PHP:variables不工作的function?
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)使用Alex所说的函数来说这是一个全局variables:
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)如果它是特定于该function,则将其传递给函数:
echo $path; // working function createList($retval, $path) { echo $path; // working
根据function如何真正为你工作,其中之一将做你。
/ J.P
如果你想让它工作,你应该在函数中使用global $path
,所以它看起来在函数范围之外。
请注意,全局variables是从地狱发送:)。
导致createList()
内部的$path
和外部(在全局范围内)是两个不同的variables。 阅读更多关于PHP中的variables作用域 。
你必须使用全局修饰符。
echo $path; function createList($retval) { global path; echo $path; // works now :)
作为使用全局variables的替代方法,只需要传入$path
。当然,如果你不需要函数内部的variables,不要麻烦!
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>"; }