Получение соседей элементов в массиве PHP

Пусть дан некоторый массив, например, такой:

<?php $arr = [1, 2, 3, 4, 5]; ?>

Давайте выведем элементы этого массива на экран, используя обычный цикл for:

<?php $arr = [1, 2, 3, 4, 5]; $length = count($arr); for ($i = 0; $i < $length; $i++) { echo $arr[$i]; } ?>

А теперь давайте переделаем наш код так, чтобы выводились не текущие элементы, а предыдущие:

<?php $arr = [1, 2, 3, 4, 5]; $length = count($arr); for ($i = 0; $i < $length; $i++) { echo $arr[$i - 1]; } ?>

Как вы видите, для решения задачи мы просто отнимаем от счетчика число 1, тем самым получая ключ предыдущего элемента. Здесь, однако, кроется проблема: в самом начале цикла значение счетчика будет равно нулю и мы попытаемся получить элемент массива с ключом -1. Такого элемента, конечно же, нет, и в результате мы на экране увидим warning (при включенном выводе ошибок).

В общем-то, это логично просто геометрически: самый первый элемент массива не имеет предыдущего. Говоря другими словами, в нашем массиве 5 элементов, но только 4 из них имеют предыдущий элемент.

То есть предыдущих элементов всегда на 1 меньше, чем элементов в массиве. Логично в таком случае, что и цикл должен сделать на одну итерацию меньше. Поэтому просто начнем цикл с 1, а не с 0, и проблема будет решена:

<?php $arr = [1, 2, 3, 4, 5]; $length = count($arr); for ($i = 1; $i < $length; $i++) { echo $arr[$i - 1]; } ?>

Понятно, что просто тупо выводить предыдущие элементы - бестолковая операция. Давайте сделаем что-нибудь более осмысленное. К примеру, найдем сумму предыдущего и текущего элементов массива и выведем их на экран:

<?php $arr = [1, 2, 3, 4, 5]; $length = count($arr); for ($i = 1; $i < $length; $i++) { echo $arr[$i - 1] + $arr[$i]; } ?>

Дан массив с числами. Переберите его циклом и в каждой итерации цикла выведите следующий элемент массива.

Модифицируйте предыдущую задачу так, чтобы в каждой итерации цикла выводилась сумма текущего и следующего элемента массива.

Дан массив с числами. Переберите его циклом и в каждой итерации цикла выведите два предыдущих элемента массива.

Модифицируйте предыдущую задачу так, чтобы в каждой итерации цикла выводилась сумма двух предыдущих элементов и текущего элемента массива.

Дан массив с числами. Переберите его циклом и в каждой итерации цикла выведите сумму предыдущего, текущего и следующего элементов массива.