Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/265.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/13.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
php从数组中为循环显示设置菜单_Php_Arrays_Loops - Fatal编程技术网

php从数组中为循环显示设置菜单

php从数组中为循环显示设置菜单,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

我将一些菜单名存储到一个数组中,然后输出一些类似的内容

在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;//计算当前内存单元位置
}
}
回声“
    ”; 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);