Существует несколько способов решения этой проблемы.
Первое решение состоит в том, чтобы использовать флаг boolean для обозначения первого элемента и продолжить в вашем foreach
$firstElement = true;
foreach($array as $key => $val) {
if($firstElement) {
$firstElement = false;
} else {
echo "$key => $val\n";
}
}
Если ваши элементы имеют естественную числовую индексацию, вам не нужен логический флаг, вы можете просто проверить, равен ли ключ 0.
foreach($array as $key => $val) {
if($key === 0) continue;
echo "$key => $val\n";
}
Второй способ - обмануть свой путь в массив с естественной нумерацией, если это еще не сделано. Я буду использовать array_keys()
, чтобы получить естественно численно индексированный массив ключей и зациклить его.
$keys = array_keys($array);
foreach($keys as $index => $key) {
if($index === 0) continue;
$val = $array[$key];
echo "$key => $val\n";
}
Третий способ - использовать внутренний указатель массива, чтобы пропустить первый элемент, а затем продолжить цикл, используя reset()
, next()
, list()
и each()
. Производительность и ресурс, это лучший вариант. Хотя ремонтопригодность сильно страдает.
reset($array); // Reset pointer to 0
next($array); // Advance pointer to 1
while (list($key, $val) = each($array)) {
echo "$key => $val\n";
}
Если вы не против потерять первый элемент массива, вы можете array_shift()
it.
array_shift($array);
foreach($array as $key => $val) {
echo "$key => $val\n";
}
Вы также можете array_slice()
массив. Я также использую count()
, чтобы можно было установить для параметра preserve_keys
значение true
.
$sliced = array_slice($array, 1, count($array)-1, true);
foreach($sliced as $key => $val) {
echo "$key => $val\n";
}