O que eu faria é remover o primeiro elemento antes de fazer o loop. Crie uma nova matriz, se necessário. Explique em um comentário por que você está fazendo isso. E então apenas faça um foreach simples.
$arrayCopy = $array; // in case you don't want to touch the original array
array_shift($arrayCopy); // removing first element because of X reason.
foreach($arrayCopy => $element) {
// do stuff
}
Dessa forma, sua intenção é perfeitamente clara.
Para esclarecer melhor, você pode agrupar o código em um método com um nome apropriado para tornar as coisas mais claras.
function doStuffToAllButTheFirst($array) { // this copies the original array, so there are no sideffects
array_shift($array);
foreach($array => $element) { // do stuff }
}
No entanto, tudo isso ainda está faltando no contexto. O que você quer fazer com os elementos? Você retornará a nova matriz? Você se importa com o original e o novo array depois de você doStuff()
?
De qualquer forma, não há uma resposta clara aqui, e decidir como tornar o código legível depende muito do contexto.
$i=2-1
é o caminho superior. : /