передача массива POST в php-функцию

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

такие как

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

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

Solutions Collecting From Web of "передача массива POST в php-функцию"

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

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

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

 function process(array $request) { } process($_POST); process($_GET); 

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

$_POST -array представляет собой массив, как и любой другой массив в 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; }