Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/asp.net/37.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php $\未正确读取配置文件中设置的全局变量_Php_Global Variables_Configuration Files - Fatal编程技术网

Php $\未正确读取配置文件中设置的全局变量

Php $\未正确读取配置文件中设置的全局变量,php,global-variables,configuration-files,Php,Global Variables,Configuration Files,这可能是一个愚蠢的问题,但我在这愚蠢的问题上被困了两个小时 我有一个函数,它检查特定配置文件的变量是否为空。 下面是函数:- include 'inc.config.php'; function not_valid_settings() { if((empty($_GLOBAL['id'])) || (empty($_GLOBAL['username'])) || empty($_GLOBAL['password'])) { return true; }

这可能是一个愚蠢的问题,但我在这愚蠢的问题上被困了两个小时

我有一个函数,它检查特定配置文件的变量是否为空。 下面是函数:-

include 'inc.config.php';
function not_valid_settings()
{
    if((empty($_GLOBAL['id'])) || (empty($_GLOBAL['username'])) || empty($_GLOBAL['password']))
    {
        return true;
    }
    else
    {
        return false;
    }
}
以下是config inc.config.php文件:

$_GLOBAL=array();
$_GLOBAL['id'] = "asas";
$_GLOBAL['username'] = "asas";
$_GLOBAL['password'] = 'as';
函数调用

include 'inc/inc.functions.php';
if(not_valid_settings())
{
    echo "Please enter correct entries in inc/inc.config.php";
    exit();
}
由于某些原因,我总是收到通知,请输入正确的详细信息。即使我的
$\u全局['username']=''
我在这里做错了什么?

$GLOBALS是您想要使用的,尽管这不是一个好的做法


问题是,
$\u GLOBAL
似乎是一个PHP超全局,但它不是——PHP中没有这样的超全局。因此,该变量不能在任何地方立即访问。如果添加
global$\u global作为函数的第一行,您的代码应该工作:

function not_valid_settings()
{
    global $_GLOBAL;
也许你想用
$GLOBALS
来代替,尽管我强烈建议不要这样做。改用
$SETTINGS
这样的名称,不要忘记使用
全局$SETTINGS在需要访问设置对象的函数中


一般来说,除非变量名是PHP超全局变量,否则应避免选择以
$开头的变量名;此前缀表示超全局变量,而您的变量不是。这会造成不必要的混乱。

我不认为
$\u GLOBAL
做了你认为它做的事情,你是说
$GLOBALS
?(但实际上你不应该使用任何一个。)是的,我实际上使用了
$\u GLOBAL
作为所有全局设置变量的变量。FWIW:不要在公开帮助函数的文件中包含“config”(应该在调用上下文中通过全局篡改来设置)
$\uu
前缀通常是为PHP超全局变量保留的。除非您正在访问其中一个前缀,否则不要使用
$\u
前缀。改为使用类似于
$SETTINGS
的内容。@cdhowie我将$\u GLOBAL更改为$GLOBAL。它似乎仍然不起作用。谢谢,我知道变量范围的概念。但我不确定我的心思是否在这里。再次感谢。