在函数中未正确调用双美元变量

时间:2014-07-03 04:00:02

标签: php

所以,我有这段代码:

$str = '_POST';

print_r($$str);
//Works just fine

function request_var($name){
    global $_POST;
    $str = '_POST';
    print_r($$str);
}

request_var('username');
// _POST not defined

request_var函数应该做的是循环遍历$ _POST,$ _GET和$ _COOKIE变量(按此顺序),如果找到传递的变量名,则停止查找并返回该值。

我有一个系统回来按预期工作,但由于某种原因现在它告诉我_POST not defined我无法弄清楚为什么?第一部分没有错误,但第二部分根本不起作用。是不是$ _POST一个超级全球? (注意:我只在global $_POST添加,看看是否能解决问题)

有什么想法吗?

编辑:基于其他用户提供的答案(在编辑屏幕中看不到他们的名字),我的工作就是这样:

function request_var($name,$default='',$force_type=false){
        $end = $default;
        $arrays = [$_POST,$_GET,$_COOKIE];

        foreach($arrays as $array){
            if(isset($array[$name])){
                $end = $array[$name];
                break;
            }
        }

        return ($force_type) ? settype($end,gettype($default)) : $end;

    }

    echo request_var('username');
    //Works just fine

1 个答案:

答案 0 :(得分:2)

  

警告请注意,变量变量不能与函数或类方法中的PHP超全局数组一起使用。

source