【问题标题】:Undefined variable: _GET未定义变量:_GET
【发布时间】:2015-08-03 22:09:18
【问题描述】:

我遇到了一个令我困惑的 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);然后是索引'test'。

【问题讨论】:

  • 我通过翻译器翻译了文本......这么好?还是?...
  • $_GET 和其他变量不能用$$array访问你必须使用$GLOBALS[$array][$index]
  • @mmm 谢谢。我会检查的
  • @Dokuro 当问题被种族中心主义群众关闭时,我正在回答。这是我试图发布的答案,希望对您有所帮助:gist.github.com/astorm/f7f75f75604cc20e2116
  • 问题解决了。我还没有弄清楚如何使用该网站。我是第一次来

标签: php get


【解决方案1】:

为英语道歉,但我不会说或读你的语言(俄语?)。此答案基于您所问内容的 Google 翻译版本。

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

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

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

但是,以下不起作用

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

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

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

    return NULL;
}

【讨论】:

    猜你喜欢
    • 2016-12-07
    • 2022-09-27
    • 2013-12-26
    • 1970-01-01
    • 2019-07-25
    • 1970-01-01
    • 2012-08-19
    • 2014-12-14
    • 2011-06-11
    相关资源
    最近更新 更多