我确定您会喜欢它的;)。
我需要一个用于构建导航的功能来浏览书中的页面(其中一些页面可能已经被割裂,并且应该来回循环);它应将链接(以数字形式)输出到给定页面的“下一页”和“上一页”。
将接收数组和输入键的函数应吐出数组给定键的值以及“ next”和“ previous”值的值。但是,如果给定键是数组中的第一个键,则应将数组的最后一个键输出为“上一个”。同样,如果接收到最后一个密钥,则应将第一个密钥输出为“ next”。
这是我到目前为止的内容:
$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);
}
这实际上应该可以工作(但不会产生“周期警觉性”)-您可以在http://writecodeonline.com/php/中快速检查-如果描述使您感到困惑,则此代码的输出很容易解释...我相信这是相当正确的容易,但是我没主意,现在是凌晨三点。当然,我需要最简单的解决方案,所以这可能是一种比我选择的方法更简单的方法。
我认为这是解决您问题的方法。告诉我它是否在做您想要的事情(有些检查是否超出数组范围将是一件好事:),但让我们坚持简单...):
/* This is from your code */
$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)
/* ... */
$pages_count = count($pages);
$pages_ordered = array();
$pages_ordered["current"] = $pages[$selected];
foreach($pages as $order_number => $page)
{
if($selected == 0) {
$pages_ordered["previous"] = $pages[$pages_count - 1];
$pages_ordered["next"] = $pages[$selected + 1];
} elseif($selected == ($pages_count - 1)) {
$pages_ordered["next"] = $pages[0];
$pages_ordered["previous"] = $pages[$selected - 1];
} else {
$pages_ordered["next"] = $pages[$selected + 1];
$pages_ordered["previous"] = $pages[$selected - 1];
}
}
print_r($pages_ordered);
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句