Статистика отсутствия соответствия может быть не очень хорошей.
Если вы действительно загружаете источник, то значения совпадения, как известно, равны 21, как в случае if, так и в switch. Компилятор должен уметь абстрагироваться, зная, какой оператор должен выполняться в любое время, и процессор должен иметь возможность правильно предсказать ветку.
Более интересный случай - когда не каждый случай ломается, в моем но это, возможно, не было предметом эксперимента.
substr("testers", -1); // returns "s"
Или для многобайтовых строк:
substr("multibyte string…", -1); // returns "…"
Или с помощью прямого доступа к строке :
$string[strlen($string)-1];
Обратите внимание, что это не работает для многобайтовых строк. Если вам нужно работать с многобайтовой строкой, подумайте об использовании семейства функций mb _ *
string.
Начиная с PHP 7.1.0, также поддерживаются отрицательные числовые индексы, например, просто $ string [-1];