我能否将整个POST数组传递给一个函数,并在函数内部处理它?
例如:
PostInfo($_POST);
function PostInfo($_POST){
$item1 = $_POST[0];
$item2 = $_POST[1];
$item3 = $_POST[2];
//do something
return $result;
}
或者这是正确的做法吗?
我能否将整个POST数组传递给一个函数,并在函数内部处理它?
例如:
PostInfo($_POST);
function PostInfo($_POST){
$item1 = $_POST[0];
$item2 = $_POST[1];
$item3 = $_POST[2];
//do something
return $result;
}
实际上,您可以将 $_POST 传递给任何接受数组的函数。
function process(array $request)
{
}
process($_POST);
process($_GET);
非常适合测试。
$_POST
,则不必费心。 $_POST
是一个“超全局变量”,它是一个全局变量,不需要使用global
关键字就可以在正常范围之外使用它。 您上面的函数将在没有参数的情况下工作。
注意:在PHP 5.4或更高版本中,您不能将任何超级全局变量(即$_POST
)用作函数参数。这将生成致命错误。$_POST
数组 和 PHP 中的其他数组一样(除了它是所谓的 超级全局变量),因此您可以将其作为函数参数传递、传递并甚至更改它(尽管在大多数情况下这可能不明智)。PostInfo($_POST);
function PostInfo($postVars)
{
$item1 = $postVars[0];
$item2 = $postVars[1];
$item3 = $postVars[2];
//do something
return $result;
}
这将明显区分函数参数和$_POST
超全局变量。另一种选择是简单地移除函数参数,并依赖于$_POST
的超级全局能力:
PostInfo();
function PostInfo()
{
$item1 = $_POST[0];
$item2 = $_POST[1];
$item3 = $_POST[2];
//do something
return $result;
}
register_global
(而不是register_globals
)即可使用$HTTP_POST_VARS
($_POST
的非超全局和已弃用的兄弟)!请参见此处:http://de.php.net/manual/en/ini.core.php#ini.register-globals。 - Stefan Gehrigregister_globals
是不好的!除此之外,它已经被弃用了。不要使用它! - Matthew Scharley