PHP 函数从外部使用变量
function parts($part) {
$structure = 'http://' . $site_url . 'content/';
echo($tructure . $part . '.php');
}
此函数使用在此页顶部定义的变量,但此变量未传递到函数中。$site_url
我们如何让它在函数中返回?
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
为了完整性,这里是使用以下解决方案:global
function parts($part) {
global $site_url;
$structure = 'http://' . $site_url . 'content/';
echo($structure . $part . '.php');
}
它之所以有效,是因为你必须告诉解释器你想使用一个全局变量,现在它认为这是一个局部变量(在你的函数中)。
建议阅读:
或者,可以通过将闭包与关键字一起使用,将变量从外部作用域引入。use
$myVar = "foo";
$myFunction = function($arg1, $arg2) use ($myVar)
{
return $arg1 . $myVar . $arg2;
};