php - проверить, является ли $ _POST массивом? - PullRequest
1 голос
/ 08 апреля 2011

Я знаю, что это может быть глупый вопрос, но я натолкнулся на фрагмент кода php, который проверяет, $_POST is_array() перед выполнением других функций.

Теперь я предполагаю, что $ _POST должно бытьвсегда ассоциативный массив или нет?эта проверка действительно нужна?а почему?

Ответы [ 8 ]

6 голосов
/ 08 апреля 2011

Если он не был изменен каким-либо образом, например

$_POST = 'not array';

, то это массив; -)

2 голосов
/ 08 апреля 2011
  • $ _ POST является суперглобальным и всегда определяется (всегда существует) и всегда является массивом
  • это правда, даже если в нем нет элементов
  • возможно, хотя, если не желательно, и я никогда не видел его, можно перезаписать или сбросить его
  • вам не нужны isset () и is_array () для массива $ _POST, но вам довольно часто они нужны для элементов в массиве $ _POST
2 голосов
/ 08 апреля 2011

Эта проверка не нужна. $ _POST - это массив superglobal , который всегда определяется. Вы должны просто проверить конкретные элементы, используя isset

1 голос
/ 08 апреля 2011

Это всегда массив, как уже сказали многие.

Я думаю, что целью может быть проверка пустого массива. ! empty ($ _ POST) должно работать нормально.

Может быть, у кодера есть разделы, в которых массив заменен на строку (глупо, если вы спросите меня), и он хочет выполнить проверку, иначе, если этот оператор будет первым, тогда его не нужно

1 голос
/ 08 апреля 2011

$ _ POST всегда является массивом, они, вероятно, проверяют, является ли определенное значение $ _POST массивом.

<input name="test" /> $ _POST ['test'] не является массивом

<input name="test[]" /> $ _POST ['test'] равно массиву

1 голос
/ 08 апреля 2011

PHP гарантирует, что $ _POST всегда является массивом, вам не нужно делать эту проверку, если где-то в вашем коде вы не удалите или не перезапишите $ _POST.

0 голосов
/ 08 апреля 2011

Как уже упоминалось несколько раз, $_POST - это суперглобальный элемент, который всегда определяется и всегда является массивом (если не перезаписан).

Если вы пытаетесь проверить, было ли что-то опубликовано, вы можете использовать что-то вроде следующего:

if (count($_POST)) {
    // something has been submitted
}

Чтобы ответить на главный вопрос, нет, проверка is_array не требуется.

0 голосов
/ 08 апреля 2011

$ _ POST всегда определяется как массив, даже если он не содержит пар ключ / значение.

...