php从数组中为循环显示设置菜单
我将一些菜单名存储到一个数组中,然后输出一些类似的内容 在diffirent页面中,菜单总是显示5个项目,当前页面总是第二个 如果当前页面在这种情况下,它将在menu10之后循环显示menu1、menu2、menu3php从数组中为循环显示设置菜单,php,arrays,loops,Php,Arrays,Loops,我将一些菜单名存储到一个数组中,然后输出一些类似的内容 在diffirent页面中,菜单总是显示5个项目,当前页面总是第二个 如果当前页面在这种情况下,它将在menu10之后循环显示menu1、menu2、menu3 $array=array('menu1','menu2','menu3','menu4','menu5','menu6','menu7','menu8','menu9','menu10'); foreach($k=>r的数组){ 如果($r==$current){ $n=$k
$array=array('menu1','menu2','menu3','menu4','menu5','menu6','menu7','menu8','menu9','menu10');
foreach($k=>r的数组){
如果($r==$current){
$n=$k;//计算当前内存单元位置
}
}
回声“”;
foreach($d为$k=>$r){
如果($n>1&&$n请尝试以下操作:
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>';
if($k==($n-1)){
回音“”.$r. ”;
}else if($k==n){
回显“”.$r. ”;
}否则{
如果($k>=计数($d)-1)
回显“”。$d[$k-count($d)+1]。 ”;
其他的
回音“”.$r. ”;
}
这实际上应该适用于这两种情况,因此您可以删除大的if
语句,并将其作为您的foreach
的主体。我想当当前选择为menu1时,您也希望菜单是这样的:
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>';
}
这是算法。它看起来很混乱,但我相信你能弄明白
menu10
menu1 [selected]
menu2
menu3
menu4
$array=array('menu1'、'menu2'、'menu3'、'menu4'、'menu5'、'menu6',
‘menu7’、‘menu8’、‘menu9’、‘menu10’;
$current='menu1';
$startIndex=array\u search($current,$array)-1;
$total=计数($array);
$result=array();
对于($index=$startIndex;$index
$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);