未定义的变量:_GET

时间:2015-08-03 22:09:18

标签: php get

我遇到了一个让我感到困惑的PHP问题

即:注意:未定义的变量:第86行的/var/www/dd.lo/app/libraries/system/input.php中的_GET

打电话时会弹出

$this->input->get('test');

该函数调用另一个函数(如果我的方法不好请不要生气。如果你告诉我如何正确地做,我会很高兴的):

public function get ($index)
{
    return $this->_getArray('_GET', $index);
}

这是私有函数的代码:

private function _getArray ($array, $index)
{
    if (isset(${$array}[$index]))
    {
        return ${$array}[$index];
    }
    else
    {
        return NULL;
    }
}

Input类可以方便地访问_POST,_GET,_COOKIE和_SERVER数据,并允许您避免类型检查:

if (isset($_POST['name']))
{
    $name = $_POST['name'];
}
else
{
    $name = NULL;
}

顺便提一下,它要求http://dd.lo/?test=dgdsgsdgsdgsd的页面(即$ _GET,我问过)

如果你写var_dump($ _ GET);然后是索引“测试”。

1 个答案:

答案 0 :(得分:3)

为英语道歉,但我不会说或读你的语言(俄语?)。这个答案是基于谷歌翻译的你所问的版本。

PHP的超级全局变量($_GET$_POST等)是特殊变量,看起来你不能将这些变量与PHP的变量变量功能一起使用。例如,这可行

$foo = ['Hello'];    
$var_name = 'foo';
var_dump($$var_name);

“变量变量”$$var_name扩展为$'foo'/$foo,变量转储正确。

但是,以下操作不起作用

$var_name = '_GET';
var_dump($$var_name);

似乎无论魔法范围变量变量存在,该范围都不包括超级全局变量。你需要重新考虑你的方法。您可以这样做的一种方法是接受实际数组而不是名称的字符串,并在函数中指定“by reference”参数以避免任何性能问题

function _getArray(&$array, $key)
{
    if(!is_array($array)) { throw new Exception("Invalid argumnet!");}
    if(array_key_exists($key, $array))
    {
        return $array[$key];
    }

    return NULL;
}