在动态数组中查找并使用下一个和上一个值

Posted

技术标签:

【中文标题】在动态数组中查找并使用下一个和上一个值【英文标题】:Find and use next and previous value in an dynamic array 【发布时间】:2013-05-30 21:57:48 【问题描述】:

我正在尝试在动态数组中获取上一个和下一个值,以便可以在指向下一页和上一页的链接上设置这些值。我从我的数据库中获取动态数组并返回我现在所在类别的 ID。

例如,我在页面 ID 6 上的类别为 Food 而数组中填充了其他类别为 Food 的页面的 ID。

我的数组可以正常工作并返回正确的值,但是当我尝试从当前 ID 获取上一个和下一个 ID 时,它什么也不返回。

这是我如何填充我的数组和数组的 var_dump 以及我如何尝试获取上一个和下一个值的代码。

$results = array();
while($row = mysql_fetch_array($result))
    $results[$row[0]] = $row[0]; 


array(3) 
[1]=> string(1) "1"
[4]=> string(1) "4"
[6]=> string(1) "6"


$index = array_search($id, $results);
if($index !== FALSE)
    $prev = $results[$index + 1];
    $next = $results[$index - 1];

变量 $next 和 $prev 什么都不返回,但是当我检查 $results[$index] 时,它会从当前页面返回正确的 ID。我真的看不出哪里出了问题。

【问题讨论】:

你可能用过unset:你的数组中的项目(索引)是:1,4,6(你没有剩下的元素) 目前我的数组中只有 3 个元素,但还会有更多,但是当我在第 4 页时,$prev 和 $next 变量仍然为空。 我不明白我所说的和你的反应之间的联系。 我的代码中没有使用unset,上面的代码和我网站上的完全一样。 我说“可能”,它允许选择“不”:) 底线:索引不连续。 【参考方案1】:

这样的代码怎么样?

$results = array();
while($row = mysql_fetch_array($result))
    $results[] = $row[0]; 


$index = array_search($id, $results);
if ($index !== FALSE)
    $prev = $results[$index + 1];
    $next = $results[$index - 1];

你遇到的问题是: 4 - 1 != 1 和 4 + 1 != 6

这就是为什么您会收到 NULL 和通知(或者您收到通知但看不到它们)。

【讨论】:

谢谢,这个小小的改动就完成了!

以上是关于在动态数组中查找并使用下一个和上一个值的主要内容,如果未能解决你的问题,请参考以下文章

js查找数组中出现次数最多的元素

使用 PHP 从动态输入字段中捕获数组值并通过电子邮件发送它们

Postgresql:搜索jsonb对象数组时如何使用动态值?

综合二

使用Javascript比较(过滤)动态数组中的多个数组值

内存位置作为放大动态数组中的最后一个值[重复]