function parts($part) { $structure = ‘http://’ . $site_url . ‘content/’; echo($tructure . $part . ‘.php’); }
该函数使用$site_url在页面顶部定义的变量,但是此变量未传递到该函数中。
$site_url
我们如何使它返回到函数中?
添加第二个参数
您需要将其他参数传递给函数:
function parts($site_url, $part) { $structure = 'http://' . $site_url . 'content/'; echo $structure . $part . '.php'; }
如果关闭
如果您希望使用闭包,则可以将变量导入当前作用域(use关键字):
use
$parts = function($part) use ($site_url) { $structure = 'http://' . $site_url . 'content/'; echo $structure . $part . '.php'; };
global -不良做法
global
该帖子经常阅读,因此需要澄清一些内容global。使用它被认为是不好的做法(请参考this和this)。
为了完整起见,这里是使用的解决方案global:
function parts($part) { global $site_url; $structure = 'http://' . $site_url . 'content/'; echo($structure . $part . '.php'); }
之所以有效,是因为您必须告诉解释器您要使用全局变量,现在它 认为 它是局部变量(在函数内)。