PHP未定义变量$ _LIT [“something”]

时间:2014-09-17 06:27:46

标签: php html arrays

在我的config.php中,我有这个数组:

$_LIT = array(
    /* Адрес сайта */
    "url" => "http://learnit.loc/", // Адрес сайта
....
);

问题是,我无法在下面的代码中使用此数组:

例如,我有一个邮件方法,我必须将$_LIT["url"]放在我的特殊链接变量中。:

function testMethod($username, $email) {
$link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";
}

而且......我无法使用它($_LIT["url"])。它只是放什么,网站网址应该是什么。

我还可以说,我在我的ohter .php文件中使用我的config.php使用" require_once" " config.php&#34 ;.所以我可以在那里得到$_LIT["something"],但不能直接在confing.php中找到。为什么呢?

感谢您的帮助。

3 个答案:

答案 0 :(得分:0)

无法直接访问函数范围之外的变量。

您需要在函数内使用关键字global

喜欢global $_LIT

$link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";

链接到文档。

http://php.net/manual/en/language.variables.scope.php

----更新----

function testMethod($username, $email) {
    global $_LIT;

     $link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";
}

答案 1 :(得分:0)

要在函数或类范围内使用全局变量,您需要使用global关键字:

function testMethod($username, $email) {
       global $_LIT;
       $link = $_LIT["url"]."scipts/activate.php?link=".rand(0, 999999).rand(0, 999999).rand(0, 999999).rand(0, 999999).$username."activationLink";
}

documentation中的更多内容。

答案 2 :(得分:0)

$ _LIT变量在函数范围之外声明。您可以在函数范围内通过将其声明为全局来访问它,如下所示:

function testMethod($username, $email)
{
    global $_LIT;
    $link = $_LIT['url'];
}

另一种方法是将$ _LIT变量添加为函数的依赖项;如果您需要提供本地化,例如,这允许您在将来轻松改变函数的行为。

function testMethod($username, $email, $config)
{
    $link = $config['url'];
}

然后像这样调用函数:

testMethod('username', 'email', $_LIT);