PHP 函数从外部使用变量

2022-08-30 08:14:44
function parts($part) { 
    $structure = 'http://' . $site_url . 'content/'; 
    echo($tructure . $part . '.php'); 
}

此函数使用在此页顶部定义的变量,但此变量未传递到函数中。$site_url

我们如何让它在函数中返回?


答案 1

添加第二个参数

您需要将其他参数传递给函数:

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'); 
}

它之所以有效,是因为你必须告诉解释器你想使用一个全局变量,现在它认为这是一个局部变量(在你的函数中)。

建议阅读:


答案 2

或者,可以通过将闭包与关键字一起使用,将变量从外部作用域引入。use

$myVar = "foo";
$myFunction = function($arg1, $arg2) use ($myVar)
{
 return $arg1 . $myVar . $arg2;
};

推荐