Алгоритм простой, но гениальный!
- Находим текущий
id
(id
просматриваемого ресурса на сайте) в массиве и записываемtrue
в$now
. - Если
$now == true
то$seen = true
- Если
$seen == false
то присваеваем$prev id
текущего ресурса в итерации. Таким образом, в$prev
будет записываться каждыйid
пока мы не дайдем доid
текущей страницы. - Далее, если
$seen == true
(прошли текущийid
),$next == false
(еще не обявлен) и мы не находимся в текущем ресурсе то присваиваем$next
id
текущего ресурса в итерации. Таким образом, под это условие будет попадать только следующий элемент в массиве после текущего! - На последок, просто предусматриваем ситуации когда мы находимся на первой странице и на последней!
$array = array(
0 => array(
'id' => 32,
'title' => 'test 1',
'uri' => 'test-1.html'
),
1 => array(
'id' => 71,
'title' => 'test 2',
'uri' => 'test-2.html'
),
2 => array(
'id' => 17,
'title' => 'test 3',
'uri' => 'test-3.html'
),
3 => array(
'id' => 83,
'title' => 'test 4',
'uri' => 'test-4.html'
)
);
$prev = null;
$next = null;
$seen = false;
$now = false;
$currentId = 17;
foreach ($array as $item) {
$now = ($item['id'] == $currentId);
if ($now) {
$seen = TRUE;
}
if (!$seen) {
$prev = $item['id'];
}
if ($seen && empty($next) && !$now) {
$next = $item['id'];
}
}
if(!$prev) {
$prev = $array[count($array) - 1];
}
if(!$next) {
$next = $array[0];
}