Цикл foreach в php будет перебирать копию исходного массива, делая функции next()
и prev()
бесполезными. Если у вас есть ассоциативный массив и вам нужно получить следующий элемент, вы можете вместо этого перебрать ключи массива:
foreach (array_keys($items) as $index => $key) {
// first, get current item
$item = $items[$key];
// now get next item in array
$next = $items[array_keys($items)[$index + 1]];
}
Поскольку результирующий массив ключей имеет сам непрерывный индекс, вы можете использовать его для доступа к исходному массиву.
Имейте в виду , что $next
будет null
для последней итерации, поскольку следующего элемента после последней нет. Доступ к несуществующим ключам массива вызовет уведомление php. Чтобы избежать этого, либо:
- Проверка последней итерации перед присвоением значений
$next
- Проверьте, существует ли ключ с
index + 1
с array_key_exists()
При использовании метода 2 полный foreach может выглядеть следующим образом:
foreach (array_keys($items) as $index => $key) {
// first, get current item
$item = $items[$key];
// now get next item in array
$next = null;
if (array_key_exists($index + 1, array_keys($items))) {
$next = $items[array_keys($items)[$index + 1]];
}
}