为了账号安全,请及时绑定邮箱和手机立即绑定

计算foreach循环并在php中创建新元素

计算foreach循环并在php中创建新元素

PHP
眼眸繁星 2021-06-29 13:56:13
我正在为 WooCommerce 产品类别开发超级菜单。我可以使用下面的代码获取所有子类别的列表;$parent_id = 37; //ID of the Parent Category$subCat_of_parent = get_terms('product_cat',array('child_of' => $parent_id));然后在如下的html结构中使用;<div class="row">    <div class="col-md-6">        <ul>        <?php        foreach ($subCat_of_parent as $subcat) {            ?>            <li>                <a href="<?php echo get_category_link($subcat->term_id); ?>"><?php echo $subcat->name; ?></a>            </li>            <?php        }         ?>        </ul>    </div></div>这是通过以这种格式获取父类别的所有子类别列表而起作用的;<div class="row">    <div class="col-md-6">        <ul>           <li><a>1st subcategory</a></li>           <li><a>2nd subcategory</a></li>           <li><a>3rd subcategory</a></li>           <li><a>4th subcategory</a></li>           <li><a>5th subcategory</a></li>           <li><a>6th subcategory</a></li>        </ul>    <div></div>我想要实现的是在第三个子类别之后,它应该中断并在新列上继续,这样我就可以得到这样的东西;<div class="row">    <div class="col-md-6">        <ul>           <li><a>1st subcategory</a></li>           <li><a>2nd subcategory</a></li>           <li><a>3rd subcategory</a></li>        </ul>    <div>    <div class="col-md-6">        <ul>           <li><a>4th subcategory</a></li>           <li><a>5th subcategory</a></li>           <li><a>6th subcategory</a></li>        </ul>    <div></div>我怎样才能做到这一点?提前感谢您的帮助
查看完整描述

3 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

您可以使用array_chunk()将数组分成 3 组。


<div class="row">


<?php


    $chunks = array_chunk($subCat_of_parent, 3);


    foreach ($chunks as $group) {

        print '<div class="col-md-6">';

        print '<ul>';


        foreach ($group as $subcat) {

            print '<li>';

                //to-do

            print '</li>';

        }


        print '</ul>';

        print '</div>';

    }


?>


</div>


查看完整回答
反对 回复 2021-07-09
?
喵喵时光机

TA贡献1846条经验 获得超7个赞

您需要每三个类别发出内部<div class="col-md-6"><ul></ul></div>部分。

这是伪代码:

  • 发射 <div class="row">

  • 设置一个计数器,比如 $i = 0

  • 开始你的 for 循环, foreach ($subCat_of_parent as $subcat) {

  • 现在说if ($i == 0),发出开始div标签和开始ul标签。

  • 发出您的列表项

  • $i = ($i + 1) % 3

  • 现在说if ($i == 0),发出结束ul标记和结束div标记。

如果子类别的数量不是三的倍数,则最后需要额外的逻辑以确保最后一组正确关闭。


查看完整回答
反对 回复 2021-07-09
?
翻阅古今

TA贡献1780条经验 获得超5个赞

<?php

$arr = array(1, 2, 3, 4,5,6);

        $count = 0;

?>

    <div class="row">

    <?php

        foreach ($subCat_of_parent as $subcat) 

        {

            // echo "count =".$count;

            if($count%3 == 0)

            {

             echo ('<div class="col-md-6">

                <ul>');

            }

            $count++;

    ?>

            <li>

                <a href="<?php echo get_category_link($subcat->term_id); ?>"><?php echo $subcat->name; ?></a>

            </li>


    <?php

            if($count%3 == 0)

            {

             echo ('

                </ul></div>');

            }


        }

    ?>

    </div>


查看完整回答
反对 回复 2021-07-09
  • 3 回答
  • 0 关注
  • 170 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信