Working with PHP some code and I came across some code that basically checks if the same variable is empty twice:
if ( !empty( $_GET[ 'branch' ] ) ) {
$branch = $_GET[ 'branch' ];
}
if ( empty( $branch ) ) {
_output( 'Error: no branch specified!' );
exit( 1 );
}
Any idea why it's set up this way? What is the advantage over just using else
, like this:
if ( !empty( $_GET[ 'branch' ] ) ) {
$branch = $_GET[ 'branch' ];
} else {
_output( 'Error: no branch specified!' );
exit( 1 );
}
So empty()
is more than just the inverse of isset()
.
It tests for "non-falseness".
One could equate it with:
if (!isset($var) || $var == false)
Notably it checks with dynamic type conversion. Which in your example probably makes sense, as things like the empty string, or "0"
, or even "0 sheep"
might not make useful branch names.
So it's often quite apt for form input, and explains the use after the isset
check. Another common idiom is however strlen()
or even strlen(trim($var))
for testing present input text.