Julie Rokk
Julie Rokk

Reputation: 560

php - check if $_POST is array?

I know this may be a silly question, but I come across a snippet of php code that check if the $_POST is_array() before execute other functions.

Now I guess that $_POST should be always an associative array or not? is this check really needed? and why?

Upvotes: 2

Views: 8768

Answers (8)

Rudi Visser
Rudi Visser

Reputation: 21989

As already mentioned several times, $_POST is a superglobal that is always defined and always an array (unless overwritten).

If you're attempting to test if something has been posted, you could use something like follows:

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

To answer the main question, no, the is_array check is not required.

Upvotes: 0

frostymarvelous
frostymarvelous

Reputation: 2805

Its always an array as many already gave said.

I think the intention is maybe to check for an empty array. !empty($_POST) should do just fine.

Maybe the coder has sections where the array is changed to a string (dumb if you ask me) and wants to make the check, else if that statement comes first, then its unnecessary

Upvotes: 1

markus
markus

Reputation: 40685

  • $_POST is a superglobal and is always defined (always exists) and is always an array
  • this is true, even if it doesn't contain any elements
  • it is possible though, if not advisable and I've never seen it, to overwrite or unset it
  • you don't need isset() and is_array() for the $_POST array but you will quite often need them for elements in the $_POST array

Upvotes: 3

No Results Found
No Results Found

Reputation: 102824

$_POST is always an array, they're probably checking if a certain $_POST value is an array.

<input name="test" /> $_POST['test'] is not an array

<input name="test[]" /> $_POST['test'] is an array

Upvotes: 3

Twelve47
Twelve47

Reputation: 3982

$_POST is always defined as an array even it doesn't contain any key/value pairs.

Upvotes: 0

halfdan
halfdan

Reputation: 34234

PHP makes sure that $_POST is always an array, you don't need to do that check unless somewhere in your code you either unset or overwrite $_POST somehow.

Upvotes: 1

jberg
jberg

Reputation: 4816

That check is unnecessary. $_POST is a superglobal array which is always defined. You should just check for specific elements using isset

Upvotes: 2

zerkms
zerkms

Reputation: 255015

If it hasn't been changed in some manner like

$_POST = 'not array';

then it is array ;-)

Upvotes: 7

Related Questions