php 如何导航到数组中的上一个和下一个值

php how to navigate to previous and next value in an array

我有一个 blog_ids 数组,我想导航到上一个和下一个 blog_id在那个数组中。

foreach($blog_ids as $blog_id) {
    echo $blog_id.'<br />';
}
// output:
id_20200523214047
id_20200523003107
id_20200521125410
id_20200521123813
id_20200514222532

从当前页面,我用 $_GET['page'];

获取 id
echo $_GET['page'];
// ouput
id_20200521125410 (3rd value of array)

我现在如何从我当前的 ID 导航到该数组中的 previousnext 值? 上一个应该是:id_20200523003107,下一个应该是id_20200521123813

如果您的数组有顺序整数键,则获取当前键,然后加上或减去一个。如果它已经在第一个位置,那么 return 最后一个,或者如果它在最后一个位置 return 第一个。这可能不是您想要的行为,所以如果 next 或 previous 不存在,只需将 ?? 之后的内容更改为您想要的任何内容:

$key  = array_search($_GET['page'], $blog_ids);
$prev = $blog_ids[$key-1] ?? end($blog_ids);
$next = $blog_ids[$key+1] ?? reset($blog_ids);

对于其他数组,只需先重新索引:

$blog_ids = array_values($blog_ids);

此外,在重新索引和搜索之后,您可以通过以下方式获得全部 3 个:

list($prev, $curr, $next) = array_slice($blog_ids, $key-1, 3);

PHP 具有以下功能:

https://www.php.net/manual/en/function.prev.php

https://www.php.net/manual/en/function.next.php

hth