何らかの理由で、if の式が false を返すと、elseif をスキップして、else に直行するようです。何か奇妙なことを理解しようとしましたが、基本的なテストはまだ失敗しています。何を与える?デバッグ用に組み込みのphp 5.4を使用しており、問題がある場合はphpstormを使用していることを追加したいと思います。
$value = 2;
if ($value == 0) {
xdebug_var_dump($value);
} elseif ($value == 1) {
xdebug_var_dump($value);
} else {
xdebug_var_dump($value);
}