function parts($part) {
$structure = 'http://' . $site_url . 'content/';
echo($tructure . $part . '.php');
}
此函数使用在本页顶部定义的变量 $site_url
,但此变量未传递到函数中。
我们如何让它在函数中返回?
最佳答案
添加第二个参数
你需要向你的函数传递额外的参数:
function parts($site_url, $part) {
$structure = 'http://' . $site_url . 'content/';
echo $structure . $part . '.php';
}
如果关闭
如果您更喜欢使用闭包,那么您可以将变量导入当前范围(use
关键字):
$parts = function($part) use ($site_url) {
$structure = 'http://' . $site_url . 'content/';
echo $structure . $part . '.php';
};
全局
- 不好的做法
这篇文章经常被阅读,所以需要澄清一下global
。使用它被认为是一种不好的做法(请参阅 this 和 this)。
为了完整起见,这里是使用 global
的解决方案:
function parts($part) {
global $site_url;
$structure = 'http://' . $site_url . 'content/';
echo($structure . $part . '.php');
}
之所以有效,是因为您必须告诉解释器您要使用全局变量,现在它认为这是一个局部变量(在您的函数中)。
推荐阅读:
关于PHP函数使用外部变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11086773/