What is ?: in PHP 5.3?

conditional-operator, language-construct, php, php-5.3, ternary-operator

Solution

`?:` is a form of the conditional operator which was previously available only as:

expr ? val_if_true : val_if_false

In 5.3 it's possible to leave out the middle part, e.g. `expr ?: val_if_false` which is equivalent to:

expr ? expr : val_if_false

From the manual:

Since PHP 5.3, it is possible to leave out the middle part of the conditional operator. Expression `expr1 ?: expr3` returns `expr1` if `expr1` evaluates to `TRUE`, and `expr3` otherwise.

Problem

Possible Duplicate: What are the PHP operators “?” and “:” called and what do they do? From http://twitto.org/ ``` <?PHP require __DIR__.'/c.php'; if (!is_callable($c = @$_GET['c'] ?: function() { echo 'Woah!'; })) throw new Exception('Error'); $c(); ?> ``` Twitto uses several new features available as of PHP 5.3: - The DIR constant - The ?: operator - Anonymous functions What does number 2 do with the ?: in PHP 5.3? Also, what do they mean by anonymous functions? Wasn't that something that has existed for a while?

Original source

Related problems