PHP: is empty($var) equivalent to !$var -
for validating variable value can
if(empty($var)){ }
or
this return true on empty string, 0 number, false, null
if(!$var){ }
what difference between 2 approaches, them equivalent?
edit: examples behave different more pratical.
edit2: difference founded answers second throw notice if $var undefined. boolean value return?
edit3: $var mean variable value, or undefined variable.
conclusion users answers: if(!$var)
, empty($var)
equivalent described here http://php.net/manual/en/types.comparisons.php, return same bool value on same variable.
if(!$var)
return php notice if $var
not defined, not case (if write code) ides underline it.
- when checking simple variables
if(!$var)
should ok - when checking arrays index ($var['key']) or object properties ($var->key)
empty($var['key'])
better using empty.
the problem since !$vars shorter empty($vars) many of prefer first way
you prefer first 1 because "shorter way"?
shorter code not mean better code, or faster scripts!
the speed of php functions , various other behaviours not determined length of function name. determined php doing evaluate, action, , return results.
besides that, don't choose methods based on length of code, choose methods based on scenario , best approach "for given scenario".
best depends on need, , there other variable checks other 2 mentioned (isset()
one).
but problem equivalent
no, , there plenty of other answers on stack, google, , php.net - aka php manual!
http://php.net/manual/en/types.comparisons.php
or, create quick test script see php returns 2 scenarios.
all of why wondered why there 6 upvotes...
adding that, initialising variables in framework (or, likely, stand alone script), means scenario changes, question , approach use.
it's contextual best.
as required answer.
anyway, answer question, here tests:
(!$vars)
example code:
if ( !$vars ) { echo "true"; } else { echo "false"; }
will return:
notice: undefined variable: vars in /whatever/ on line x
true
however, if initialise var in scripts somewhere first:
$vars = ""; $vars = null; $vars = 0;
any of above return:
[no php notice]
true
$vars = "anything";
will return:
false
this because exclamation mark testing if var false, when not initialised string test script returns true because not false.
when initialise string var not being false false.
empty($vars)
example code:
if ( empty($vars) ) { echo "true"; } else { echo "false"; }
not initialised/set @ all, , of following:
$vars = ""; $vars = null; $vars = 0;
will return:
true
there no php notice using empty, here show difference between 2 options (and remember when said shortest code not "best"? depends on scenario etc.).
and previous test:
$vars = "anything";
returns:
false
this same ( !$var )
, testing if empty, , without var being initialised @ all, or "empty()
" value: eg (""), or null, or 0 (0), testing if var empty true, true output.
you false when setting var string because empty = false set something.
the difference empty()
not throw php notice when var not defined, whereas (!$var)
will.
also, may prefer being "shorter code", think if ( !$var )
looks ugly, , isn't simple view if ( empty($var) )
.
again, depends on scenario - php provides different options suit different requirements.
Comments
Post a Comment