Что бы я сделал, это удалил первый элемент перед циклом. Создайте новый массив, если вам нужно. Объясните в комментарии, почему вы это делаете. А потом просто сделай простой foreach.
$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
}
Таким образом, ваше намерение совершенно ясно.
Чтобы уточнить, вы можете обернуть код в метод с соответствующим именем, чтобы прояснить ситуацию.
function doStuffToAllButTheFirst($array) { // this copies the original array, so there are no sideffects
array_shift($array);
foreach($array => $element) { // do stuff }
}
Однако все это все еще отсутствует контекст. Что вы хотите сделать с элементами? Будете ли вы возвращать новый массив? Вы заботитесь об оригинале и новом массиве после вас doStuff()
?
В любом случае, здесь нет четкого ответа, и решение о том, как сделать код читаемым, сильно зависит от контекста.
$i=2-1
является лучшим способом. : /