将POST数组传递给php函数

时间:2009-11-02 12:07:26

标签: php

我可以将整个POST数组传递给函数并在函数中处理吗?

,例如

PostInfo($_POST);


function PostInfo($_POST){
    $item1 = $_POST[0];
    $item2 = $_POST[1];
    $item3 = $_POST[2];
        //do something
return $result;

}

或者这是正确的方法吗?

3 个答案:

答案 0 :(得分:8)

是。如果您要命名本地变量$_POST,请不要打扰。 $_POST是一个“超全局”,一个不需要global关键字在正常范围之外使用它的全局。上面的函数可以在没有参数的情况下工作。

  

注意您不能在PHP 5.4或更高版本中使用任何超全局(即$_POST)作为函数参数。它会产生致命错误

答案 1 :(得分:6)

您实际上可以将$ _POST传递给任何接收数组的函数。

function process(array $request)
{

}

process($_POST);
process($_GET);

非常适合测试。

答案 2 :(得分:1)

$_POST-array是一个数组,就像PHP中的每个其他数组一样(除了是所谓的superglobal),因此你可以将它作为函数参数传递,传递它甚至改变它(即使在大多数情况下这可能并不明智。)

关于你的代码,我会稍微改一下以使其更清晰:

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;
}