我相信你会喜欢它;)。显示与循环阵列的下一个和前一个键
我需要一个建立浏览网页页面的导航功能(其中一些页面可以分开收集,它应该来回循环);它应该将链接(如数字)输出到给定页面的“下一页”和“上一页”页面。
将接收数组和输入键的函数应该吐出数组给定键的值以及“next”和“previous”值的值。 但是,如果给定的键是数组中的第一个键,它应该将数组的最后一个键输出为“previous”。同样,如果它接收到最后一个键,它应该输出第一个键作为“下一个”。
这是我到目前为止有:
$pages = array(5, 1, 6, 8);
sort($pages);
$selected = 1; // that's second key (value:5, next:6, previous:1)
// $selected = 3; // that's forth and a last key (value:8, should return next:1, previous:6)
$selected = key($pages)+$selected;
while ($pointer = current($pages)) {
if ($selected == key($pages)) {
echo $pointer." - current <br>";
}
elseif($selected+1 == key($pages)){
echo $pointer." - next <br>";
}
elseif($selected-1 == key($pages)){
echo $pointer." - previous <br>";
}
else
echo $pointer."<br>";
next($pages);
}
这应该实际工作(但没有“周期awarness”) - 你可以在http://writecodeonline.com/php/快速检查 - 如果说明迷惑你,这个代码的输出是相当自我解释... 我相信这很容易,但我没有想法,现在是凌晨3点。当然,我需要最简单的解决方案,所以它可能比我选择的更简单一些。
你是什么意思与“循环”?关于输出 - 5和1之后是5还是5之前?那么到数组中的顺序是什么意思呢? – divaka
数组可以通过未排序,但用PHP排序()解决,所以不用担心。循环意味着链接“下一个”和“前一个”应该循环工作,像这样(从这个排序数组中的示例):1,5,6,8,[1,5,6,8],1,5, 6,等等(所以如果你在8,下一个是1,如果你在1以前是8)。我相信它在力学中被称为“环形计数器”。 –
但是我还不清楚,这是什么目的?以及这是如何与报废页面的书籍连接?如果第3页和第4页报废,那么我会从2直到5?如果你给我一个真实的例子或一个简单的场景,它会容易得多。 – divaka