我有四个文件:functions.php,lang.php,init.php和index.php。
函数.php
function loadLanguage()
{
include_once("lang.php");
}
郎.php
$LANG = array(
"SOMETEXT" => "This is a random text"
);
初始化.php
include_once("functions.php");
loadLanguage();
索引.php
include_once("init.php");
echo $LANG["SOMETEXT"];
我明白这个:
未定义的变量$LANG。
我在 init.php 中找到了一个解决方案:$LANG = loadLanguage();
,但我不想使用它。还有别的办法吗?
因为你在函数中有这一行
include_once("lang.php");
lang.php
中定义的变量仅在函数 loadLanguage
中定义。稍后尝试将这些变量作为全局变量访问时,它们是未定义的。如果您需要它们是全球性的,请使它们全球化;否则,您必须从函数中返回它们或以其他方式传递它们。
换句话说,您的代码等效于以下内容:
// include_once("init.php");
// does this:
// include_once("functions.php");
// does this:
function loadLanguage()
{
// include_once("lang.php");
// does this:
$LANG = array(
"SOMETEXT" => "This is a random text"
);
}
loadLanguage();
echo $LANG["SOMETEXT"];
去除所有包含,您将获得:
function loadLanguage()
{
$LANG = array(
"SOMETEXT" => "This is a random text"
);
}
loadLanguage();
echo $LANG["SOMETEXT"];
这很容易看出$LANG
实际上是loadLanguage
范围内的局部变量。
这是一个
黑客,但您可以在loadLanguage()
内部声明$LANG
global
,然后完成您需要的操作。Ed Cottrell的回答描述了为什么你的方法行不通。
初始化.php
<?php
function loadLanguage()
{
global $LANG;
include_once("lang.php");
}
var_dump($LANG);
loadLanguage();
var_dump($LANG);
输出
~$ php init.php
PHP Notice: Undefined variable: LANG in /Users/Josh/init.php on line 9
NULL
array(1) {
["s"]=>
string(6) "string"
}