Doublebang

Ever seen or written this PHP code?

function foo( $foo ) {
    // magic
    if ( $foo ) // $foo is not bool
        return true;
    else
        return false;
}

So you want to return a boolean value (true/false) but $foo isn’t a bool so you can’t return it directly.

Option 1, cast to boolean:

function foo( $foo ) {
    // magic
    return (boolean) $foo;
}

Option 2, cast to “bool” (shortcut):

function foo( $foo ) {
    // magic
    return (bool) $foo;
}

Option3, doublebang:

function foo( $foo ) {
    // magic
   return !!$foo;
}

The first ! (the “not” operator) casts $foo to a negative bool, and the second one flips it back to the bool representation of its original value.

And of course if you want to return true when the variable evaluates as false, you can just do:

function foo( $foo ) {
    // magic
    return !$foo;
}

Appologies to anyone who has read this far and was expecting pornography.

22 thoughts on “Doublebang

  1. I would have to say that if we are trying to write obtuse but valid php code then either return $foo && $foo or the more elegant, and a favourite of mine return $foo ? true : false

  2. @n-blue: Now, I know. ROFL

    @Viper007Bond: return !empty($foo); would actually produce the same result, the ternary op just makes it explicit and redundant. Besides, !! is still shorter than !empty().🙂

  3. I realize this is completely off-topic, but is it possible to order front page posts – last commented on top? And if it is possible, (there is no plugin-I checked) what would writing a this kind of plugin include?

Comments are closed.