当前位置: 首页 > 面试题库 >

PHP函数从外部使用变量

陶富
2023-03-14
问题内容

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。使用它被认为是不好的做法(请参考this和this)。

为了完整起见,这里是使用的解决方案global

function parts($part) { 
    global $site_url;
    $structure = 'http://' . $site_url . 'content/'; 
    echo($structure . $part . '.php'); 
}

之所以有效,是因为您必须告诉html" target="_blank">解释器您要使用全局变量,现在它 认为 它是局部变量(在函数内)。



 类似资料:
  • 问题内容: 我想使用匿名函数,所以我决定制作一个简单的主要查找器。这里是: 然而,我发现了什么,就是在每次访问,而我希望它是一个字面上的数字。我怎样才能使其成为替代? 问题答案: 您可以在创建lambda时“捕获” 这会将lambda的上下文设置为等于创建时的值。您还可以说,如果需要的话,它并不能完全捕获,但是可以满足您的需要。 这是一个查找问题,类似于具有定义函数的以下内容:

  • 问题内容: 基本上,我使用此方便的函数来处理数据库行(请注意PDO和/或其他内容) 使用此功能,我可以简单地执行以下操作: 假设现在我需要将所有内容串联在一起(这只是一个示例)。 我该怎么办?我当时在想像这样的东西,但是它不是很优雅: 问题答案: 你必须使用如在文档中所述: 闭包也可以从父范围继承变量。任何此类变量必须在函数头中声明。从父作用域继承变量与使用全局变量不同。全局变量存在于全局范围内,

  • 问题内容: 我想使用变量来动态命名一些函数,如下所示: 我知道我可以使用这样的变量来 调用 函数: 但是最重​​要的例子对我不起作用。 有任何想法吗? 我正在使用具有模块的系统。每个模块都是单个php脚本,可以从特定文件夹中添加或删除。 每个模块都需要一个新功能来对其进行初始化。我正在寻找文件名,然后想循环并创建一系列功能,每个模块一个。 我使用的是现有系统,无法重写模块处理。 替代方法是只写出所

  • 问题内容: 希望您能提供帮助。我正在寻找一种编写稍后插入一个项目的函数的方法。让我给你看一个例子: 我以为我可以在这里提供一个值,一旦我将其替换,那么显然就不那么容易了。我必须更改/添加什么才能使我的功能正常工作?函数如何知道乘法是?谢谢你们的帮助! 问题答案: 系统要求您返回一个函数,但返回的是计算得出的值: 现在将执行您期望的操作,但是如果将其分配给一个值,它可能会更有用,因此可以多次调用它,

  • 问题内容: 我外面有一个数组: 我想让我的函数可以访问其外部的数组,以便可以向其添加值 如何为函数赋予正确的作用域范围? 问题答案: 默认情况下,当您在函数内部时,您无权访问外部变量。 如果您希望函数可以访问外部变量,则必须在函数内部将其声明为: 有关更多信息,请参见 可变作用域 。 但是请注意, 使用全局变量不是一个好习惯 :通过这种方法,您的函数不再是独立的。 一个更好的主意是使您的函数 返回

  • 所以我有这个函数,它获取Laravel项目所在的剩余内存。问题是有两个控制器需要检查剩余的内存。 这是它看起来像它就在我的控制器 所以我想把这个函数放在一个外部PHP中,以便在需要时调用它。有什么办法吗?非常感谢!