Для сценариев, генерирующих SQL-запросы, или для любых других операций, выполняющих различные действия для первого или последнего элемента, гораздо быстрее (почти в два раза быстрее) избежать ненужных проверок переменных.
Текущее принятое решение использует цикл и проверку в цикле, которые будут выполняться каждые_единки_терации, правильный (быстрый) способ сделать это:
$numItems = count($arr);
$i=0;
$firstitem=$arr[0];
$i++;
while($i<$numItems-1){
$some_item=$arr[$i];
$i++;
}
$last_item=$arr[$i];
$i++;
Небольшой домашний тест показал следующее:
test1: 100000 прогонов модели Morg
время: 1869,3430423737 миллисекунд
test2: 100000 прогонов модели, если последний
время: 3235,6359958649 миллисекунд