Check a 1D array for emptiness
Checking a 1D array for empty values? Don't do a lengthy loop, do this instead:
if(strlen(implode('', $array)) == 0)
Written by kanuj bhatnagar
Related protips
7 Responses
Add your response
Because sometimes arrays' keys might exist, but no value(s) for those keys. Technically, the array isn't empty, but you can't use any of those keys' values. Case in point, a form with 10 email address fields, whose field names are kept as email[]. When this form is submitted, the $_POST['email'] array will be non-empty, but won't have any values for any of its keys.
But why bother doing such a check when you still eventually have to loop through and check each individual fields.
If I fill 2 at random and leave the other 8 fields empty, you will still have to loop and get the 2 values.
Makes sense for a project I'm in right now, where the first validation has to be that the email field can't be empty. This acts as a first step of validation, and if it is, I simply return an error message. There will be a chance, atleast in our scenario where users will simply submit the form without filling in anything at all.
@kanuj Then why not do something like
if( !isset( $array['email'] ) || empty( $array['email'] ) )
@darkmantiscs Because in the scenario I just mentioned above it won't work. There's a form with multiple name and email rows, and the user can add more via JS. These fields are named like such: name[] and email[]. If the user submits an empty form, isset/empty won't validate a list of emails/names that don't have any data in them. The name/email arrays will have keys equal to the number of rows, but all of them will have empty values.
if (! array_filter($values, 'strlen'))
I think this line is more verbose, but I got to admit that it's a bit slower than @kanuj 's. Just a matter of preference I guess.