将子菜单项的数量限制为4

时间:2014-03-19 10:45:14

标签: php

我正在尝试将sub_menu项目(li)的数量限制为最多4个。我没有php开发人员,但是给了它一些代码,如下所示。

这是现有的代码,它将继续全部显示,现在没有限制。

if (count($sub_menu_array)) {
        echo '<nav id="sub-nav"><ul>';
        foreach ($sub_menu_array as $sub_menu_row) {
            // print_r($sub_menu_row);
            echo '<li><a href="'.HTTP_HOST.$sub_menu_row['categoryPath'].'">'.strtoupper($sub_menu_row['categoryName']).'</a></li>';
        }

        echo '</ul></nav>';
    } else {
        echo '<nav id="sub-nav"><ul><li></li></ul></nav>';
    }

这是我尝试的内容,但它最终没有显示任何内容。

if (count($sub_menu_array)) {
        echo '<nav id="sub-nav"><ul>';
        $i = 0;
        foreach ($sub_menu_array as $sub_menu_row => $v) {
            // print_r($sub_menu_row);
            echo '<li><a href="'.HTTP_HOST.$sub_menu_row['categoryPath'].'">'.strtoupper($sub_menu_row['categoryName']).'</a></li>';
            if (++$i == 3) break;
        }

        echo '</ul></nav>';
    } else {
        echo '<nav id="sub-nav"><ul><li></li></ul></nav>';
    }

5 个答案:

答案 0 :(得分:1)

PHP foreach语句的语法有两个不同的变体

foreach (array_expression as $value){
    statement
}
foreach (array_expression as $key => $value)
    statement

当您从

链接代码时
foreach ($sub_menu_array as $sub_menu_row) {

foreach ($sub_menu_array as $sub_menu_row => $v) {

您还更改了适用于$ sub_menu_row的值。例如:

$sub_menu_array = array ('a','b');

在第一次迭代的第一个变体中

$sub_menu_row=='a'

和第二个变种

$sub_menu_row==0 #array's element key
$v=='a' #value

有两种解决方案

  1. 只需删除&#39; =&gt; $ V&#39;
  2. 在foreach声明
  3. 中将$ sub_menu_row更改为$ v

答案 1 :(得分:0)

您已更改了foreach,现在应该使用$ v作为值。

if (count($sub_menu_array)) {
    echo '<nav id="sub-nav"><ul>';
    $i = 0;
    foreach ($sub_menu_array as $sub_menu_row => $v) {
        // print_r($sub_menu_row);
        echo '<li><a href="'.HTTP_HOST.$v['categoryPath'].'">'.strtoupper($v['categoryName']).'</a></li>';
        if (++$i == 3) break;
    }

    echo '</ul></nav>';
} else {
    echo '<nav id="sub-nav"><ul><li></li></ul></nav>';
}

答案 2 :(得分:0)

对于菜单部分来说这应该足够了:

echo '<nav id="sub-nav"><ul>';
$i = 0;
foreach ($sub_menu_array as $sub_menu_row => $v) {
    if($i < 4) {
        echo '<li><a href="'.HTTP_HOST.$sub_menu_row['categoryPath'].'">'.strtoupper($sub_menu_row['categoryName']).'</a></li>';
    }
    $i++;
}

echo '</ul></nav>';

答案 3 :(得分:0)

在显示菜单

之前插入此行
$sliced_sub_menu_array = array_slice($sub_menu_array, 0, 4);

然后

foreach ($sliced_sub_menu_array as $sub_menu_row => $v) {
    // displaying here
}

答案 4 :(得分:-1)

使用此代码。

<?php
if (count($sub_menu_array)) {
        echo '<nav id="sub-nav"><ul>';
        $i = 0;
        foreach ($sub_menu_array as $sub_menu_row => $v) {
            // print_r($sub_menu_row);
            echo '<li><a href="'.HTTP_HOST.$sub_menu_row['categoryPath'].'">'.strtoupper($sub_menu_row['categoryName']).'</a></li>';
            if ($i == 3)
            { 
                break;
            }
            $i++;
        }

        echo '</ul></nav>';
    } else {
        echo '<nav id="sub-nav"><ul><li></li></ul></nav>';
    }
    ?>