How to find out if option exists but is empty?

I am using something like this on one of my plugins:

$myOption_def = "myOption Default Value";
$myOption = get_option( 'myOption' ) ? get_option( 'myOption' ) : $myOption_def;

That works fine, but the problem is that I need to be able to set the option to “empty”, but when I do that (from a textarea on my plugin’s option page), I get the default value instead of an empty string because get_option( ‘myOption’ ) returns the same if my option value is empty than if it doesn’t exists.

So how can I figure out when my option doesn’t exist (and then set $myOption to my default value), or when my option value is empty (and then set $myOption to an empty string)?

4 Answers
4

Basically to distinguish between false boolean value and '' empty string you must use more strict comparison operator.

var_dump( '' == false ); // this is 'true', treated like two 'empty()' values

var_dump( '' === false ); // this is 'false', because values are both 'empty()' BUT of different type

But there is more. Since what you want is very typical – get_option() already can provide default value on its own. So your code can be simplified to:

$myOption = get_option( 'myOption', $myOption_def );

Note that this will correctly determine empty string and won’t apply default value in that case.

Leave a Comment