有没有办法通过使用 say filter_input 来简化此功能

Is there a way to simplify this function by using say filter_input

function valueFromGetOrPost($parameter)
{
    $shvalue=NULL;
    if ($_GET[$parameter])
    {
        $shvalue=$_GET[$parameter];
    }
    else if (isset($_POST[$parameter]))

    {
        $shvalue=$_POST[$parameter];
    }
    return $shvalue;

}

说用 filter_input

基本上代码会检查 GET 或 POST 中是否存在参数。然后return参数的值。

我认为这一定很常见,一些内置函数应该已经存在了

使用$_REQUESTdocumentation)。

An associative array that by default contains the contents of $_GET, $_POST and $_COOKIE.

因此您的代码将如下所示:

function valueFromGetOrPost($parameter)
{
    $shvalue=NULL;
    if ($_REQUEST[$parameter])
    {
        $shvalue=$_REQUEST[$parameter];
    }
    return $shvalue;

}

你可以使用快速 return 来简化它,即

function valueFromGetOrPost($parameter){

    $shvalue=NULL;

    if (isset($_GET[$parameter])){
         return $_GET[$parameter];
    } else if (isset($_POST[$parameter])){
         return $_POST[$parameter];
    }
}

或者,您可以使用三元运算符,因为如果两者都未设置,您仍然 returning NULL:

function valueFromGetOrPost($parameter){

 $shvalue = (isset($_GET[$parameter]) ? $_GET[$parameter] : $_POST[$parameter]);

 return $shvalue;

}

这是我的建议,使用 filter_input() 函数:

function valueFromGetOrPost($parameter)
{
    $value = ($getValue = filter_input(INPUT_GET, $parameter))
        ? $getValue
        : filter_input(INPUT_POST, $parameter);

    return ($value) ? $value : NULL;
}