Чтобы получить ответ, вам нужно настроить тестовый стенд. Сравните все методы за несколько (сотни тысяч или миллионов) итераций на простое. Попробуйте встроенную функцию microtime, чтобы измерить разницу между началом и концом. Это ваше прошедшее время.
На тестирование у вас уйдет 2 минуты.
Чтобы сэкономить немного усилий, я написал тест. Мой собственный тест показывает, что функциональное решение (substr) НАМНОГО медленнее (ожидаемое). Идиоматическое решение PHP ({}) так же быстро, как и метод индекса. Они взаимозаменяемы. ([]) Является предпочтительным, поскольку это направление, в котором движется PHP относительно смещения строк.
<?php
$string = 'abcd';
$limit = 1000000;
$r = array(); // results
// PHP idiomatic string index method
$s = microtime(true);
for ($i = 0; $i < $limit; ++$i) {
$c = $string{2};
}
$r[] = microtime(true) - $s;
echo "\n";
// PHP functional solution
$s = microtime(true);
for ($i = 0; $i < $limit; ++$i) {
$c = substr($string, 2, 1);
}
$r[] = microtime(true) - $s;
echo "\n";
// index method
$s = microtime(true);
for ($i = 0; $i < $limit; ++$i) {
$c = $string[2];
}
$r[] = microtime(true) - $s;
echo "\n";
// RESULTS
foreach ($r as $i => $v) {
echo "RESULT ($i): $v \n";
}
?>
Результаты:
РЕЗУЛЬТАТ ( Синтаксис идиоматических скобок PHP4 & 5 ): 0.19106006622314
РЕЗУЛЬТАТ ( функция среза строки ): 0.50699090957642
РЕЗУЛЬТАТ (* синтаксис индекса, будущее как устаревшие скобки *): 0.19102001190186