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