передача массива POST в функцию php - PullRequest
4 голосов
/ 02 ноября 2009

Могу ли я передать весь массив POST в функцию и обработать его внутри функции?

например

PostInfo($_POST);


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

}

или это правильный способ сделать это?

Ответы [ 3 ]

8 голосов
/ 02 ноября 2009

Да. Если вы собираетесь назвать локальную переменную $_POST, не беспокойтесь. $_POST - это «суперглобальный», глобальный объект, для которого не требуется ключевое слово global, чтобы использовать его вне обычной области видимости. Ваша функция выше будет работать без параметра.

ПРИМЕЧАНИЕ Вы не можете использовать любой суперглобальный (то есть $_POST) в качестве аргумента функции в PHP 5.4 или новее Это сгенерирует фатальную ошибку

6 голосов
/ 02 ноября 2009

Вы можете фактически передать $ _POST любой функции, которая принимает массив.

function process(array $request)
{

}

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

Отлично подходит для тестирования.

1 голос
/ 02 ноября 2009

$_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;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...