Если вы продолжительное время занимаетесь программированием, то наверняка знаете о тернарных (условных) операторах, которые заменяют конструкцию: if-else. Пример с сайта php.net:
<?php
// Пример использования тернарного оператора
$action = (empty($_POST['action'])) ? 'default' : $_POST['action'];
// Верхняя строка идентична конструкции if/else
if (empty($_POST['action'])) {
$action = 'default';
} else {
$action = $_POST['action'];
}
?>
В конструкции Выражение1 ? Выражение2 : ВыражениеЗ выполняется Выражение2 если Выражение1 истинно, иначе выполняется Выражение3. Недавним открытием для меня было, что с версии 5.3 в PHP появилась новая форма тернарного оператора, в которой можно опустить Выражение2. Получается конструкция вида Выражение1 ?: ВыражениеЗ, в которой выполняется Выражение1 если оно само истинно, иначе Выражение3.