Могу ли я передать весь массив POST в функцию и обрабатывать ее внутри функции?
такие как
PostInfo($_POST); function PostInfo($_POST){ $item1 = $_POST[0]; $item2 = $_POST[1]; $item3 = $_POST[2]; //do something return $result; }
или это правильный способ сделать это?
Да. Если вы собираетесь называть локальную переменную $_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; }