Php 将子菜单项的数量限制为4个
我试图将子菜单项(li)的数量限制为最多4个。我不是php开发人员,但尝试了一些代码,如下所示 这是现有的代码,它将继续显示所有内容,目前没有设置限制Php 将子菜单项的数量限制为4个,php,Php,我试图将子菜单项(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);
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(计数($sub_菜单_数组)){
回声“”;
foreach($sub_menu_数组作为$sub_menu_行){
//打印(子菜单行);
回音“”;
}
回声“
”;
}否则{
回音“”;
}
这是我试过的,但结果什么也没显示
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>';
}
if(计数($sub_菜单_数组)){
回声“”;
$i=0;
foreach($sub_menu_数组作为$sub_menu_行=>$v){
//打印(子菜单行);
回音“”;
如果(++$i==3)中断;
}
回声“
”;
}否则{
回音“”;
}
使用此代码
<?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>';
}
?>
您已经更改了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>';
}
if(计数($sub_菜单_数组)){
回声“”;
$i=0;
foreach($sub_menu_数组作为$sub_menu_行=>$v){
//打印(子菜单行);
回音“”;
如果(++$i==3)中断;
}
回声“
”;
}否则{
回音“”;
}
对于菜单部分,这应该足够了:
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>';
echo'';
$i=0;
foreach($sub_menu_数组作为$sub_menu_行=>$v){
如果($i<4){
回音“”;
}
$i++;
}
回声“
”;
在显示菜单之前插入此行
$sliced_sub_menu_array = array_slice($sub_menu_array, 0, 4);
然后
foreach ($sliced_sub_menu_array as $sub_menu_row => $v) {
// displaying here
}
PHP foreach语句的语法有两种不同的变体
foreach (array_expression as $value){
statement
}
foreach (array_expression as $key => $value)
statement
当您从
foreach ($sub_menu_array as $sub_menu_row) {
到
您还更改了适用于$sub_menu_行的值。例如:
$sub_menu_array = array ('a','b');
在第一次迭代的第一个变量中
$sub_menu_row=='a'
第二种变体
$sub_menu_row==0 #array's element key
$v=='a' #value
有两种解决方案
为什么要添加“=>$v”?您将$sub_menu_row设置为键,但没有设置为值老实说,我不知道,刚才只是查看了一个示例并试用了它,我更喜欢前端而不是后端。只需删除“=>$v”@rjhdby-perfect,现在效果很好,谢谢。我当时差点就明白了:)。如果你想把它作为一个答案写下来,你很乐意接受。或者你甚至可以像$sub_menu_array=array_slice($sub_menu_array,0,4)那样使用它;如果你不必使用整个菜单项列表,我将不工作。循环仍然引用数组的键,而不是值。此代码错误$sub_menu_row是$sub_menu_数组的键,但作者需要它的值。
$sub_menu_row==0 #array's element key
$v=='a' #value