$array=array('menu1','menu2','menu3','menu4','menu5','menu6','menu7','menu8','menu9','menu10');
我将一些菜单名称存储到一个数组中,然后输出一些像
在不同的页面中,菜单总是显示5个项目,当前页面总是第2个。
如果当前页面是这种情况,它将在menu10之后循环显示menu1,menu2,menu3。
foreach($array as $k=>$r){
if($r==$current){
$n=$k;//count current memu position
}
}
echo '<ul>';
foreach($d as $k=>$r){
if($n>1&&$n<7){//normal situation like first image
if($k==($n-1)){
echo '<li><a>'.$r.'</a></li>';
}else if($k==$n){
echo '<li class="current">'.$r.'</li>';
}else{
echo '<li><a>'.$r.'</a></li>';
}
}else{
//How to do in the case of the second image?
}
}
echo '</ul>';
答案 0 :(得分:1)
我认为当菜单1:
时,您还希望菜单看起来像这样menu10
menu1 [selected]
menu2
menu3
menu4
这是算法。它看起来很混乱,但我相信你可以搞清楚。
$array=array('menu1','menu2','menu3','menu4','menu5','menu6',
'menu7','menu8','menu9','menu10');
$current = 'menu1';
$startIndex = array_search($current, $array)-1;
$total = count($array);
$result = array();
for($index = $startIndex ; $index <$startIndex+5; $index++){
$result[] = $array[($index+$total)%$total]; //using % operator
}
print_r($result);
答案 1 :(得分:0)
试试这个:
if($k==($n-1)){
echo '<li><a>'.$r.'</a></li>';
}else if($k==$n){
echo '<li class="current">'.$r.'</li>';
}else{
if($k >= count($d)-1)
echo ''<li><a>'.$d[$k-count($d)+1].'</a></li>';
else
echo ''<li><a>'.$r.'</a></li>';
}
这实际上应该适用于这两种情况,因此您可以移除较大的if
语句,并将其作为foreach
的正文。