Пример:
    public function newError($message, $code)
    {
        if ($code === false)
        {
            $code = isset($this->errorNumbers[$message]) ?
                $this->errorNumbers[$message] :
                isset($this->errorNumbers['']) ?
                    $this->errorNumbers[''] : $code;
        }
    }
По задумке, если $code - ложь, то в массиве errorNumbers ищется код ошибки по ее тексту. Если такой записи в массиве нет, то используется ключ '' (пустая стока) как значение по умолчанию.
Но вне зависимости от наличия errorNumbers[$message] результатом будет errorNumbers['']!
Лечится оборачиванием части выражения скобками:
    public function newError($message, $code)
    {
        if ($code === false)
        {
            $code = isset($this->errorNumbers[$message]) ?
                $this->errorNumbers[$message] :
                (isset($this->errorNumbers['']) ?
                    $this->errorNumbers[''] : $code);
        }
    }
Я что-то не понимаю или это бага?
http://ru.php.net/manual/en/language.operators.precedence.phpПо ссылке указана левая ассоциативность.