Welcome to WebmasterWorld Guest from 54.147.10.12

Forum Moderators: coopster & jatar k

Message Too Old, No Replies

testing for array of empty values

     
4:50 pm on Jan 19, 2012 (gmt 0)

Preferred Member

10+ Year Member

joined:Nov 10, 2005
posts:387
votes: 0


Is there an easy test to see if an array has only empty values?

empty($x) doesn't work for: $x = array('',' ','');

This works, but I'm looking for something simpler:

if ( !trim(implode($x)) )...
5:48 pm on Jan 19, 2012 (gmt 0)

Senior Member

WebmasterWorld Senior Member eelixduppy is a WebmasterWorld Top Contributor of All Time 10+ Year Member

joined:Nov 12, 2005
posts:5966
votes: 0


>> something simpler

How so? That's pretty simple. There are no built-in PHP functions that do what you're looking for that I know of. If you're looking for brevity, then why not write your own function for this?
7:05 pm on Jan 19, 2012 (gmt 0)

Senior Member

WebmasterWorld Senior Member penders is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month

joined:July 3, 2006
posts: 3123
votes: 0


I would agree, that looks pretty simple and fits your example.

But your example seems to be a special case, since a string containing a space is not strictly 'empty' as far as PHP is concerned. So even if there was a PHP function to perform this action, I would guess it would fail.

Likewise, 'empty' values includes '0' and empty array's which would cause your current test to fail.
7:56 pm on Jan 19, 2012 (gmt 0)

Preferred Member

10+ Year Member

joined:Nov 10, 2005
posts:387
votes: 0


OK - just wanted to be sure I wasn't missing a built-in function similar to 'empty'.
12:11 pm on Feb 20, 2012 (gmt 0)

Senior Member

WebmasterWorld Senior Member penders is a WebmasterWorld Top Contributor of All Time 5+ Year Member Top Contributors Of The Month

joined:July 3, 2006
posts: 3123
votes: 0


Just encountered this again... an alternative... if you want to check that an array contains only empty values (that is PHP's definition of empty [uk.php.net]) then you could use array_filter() [uk.php.net], omitting the 2nd (callback) argument. The default behaviour is to filter out empty elements. So, this becomes...

$x = array('',0,0.0,'0',null,false,array()); 
echo !array_filter($x) ? 'EMPTY' : 'NOT empty'; // EMPTY


NB: This does not consider strings of spaces to be empty as in the OP. You would need to provide a simple callback function in order to check for that.