繁体   English   中英

如何在foreach中使用optgroup?

[英]how to use an optgroup in a foreach?

在我的选择框中,我试图这样做:

Maincategory name
   subcat
   subcat
   subcat
anothermain category
    subcat
    subcat

这是我目前的代码:

<select name="categories" class="form-control col-sm-12">
    <?php foreach(ProductModel::categories() as $category): ?>
      <option value="<?=System::escape($category->sub_category); ?>"><?=System::escape($category->sub_category); ?></option>
    <?php endforeach; ?>
</select>

不想在所有子猫上都显示主类别名称

maincate:subcat
maincate:subcat
maincate:subcat

这是我的桌子:

在此处输入图片说明

我将如何去做呢? 我不能在foreach表演猫的名字中有5个,因为我永远不会在每个主要猫中拥有相同数量的子猫

如果我理解正确,可以在每次循环之前为当前主类别名称分配一个变量(将其开头为null),然后在每次迭代时检查它是否与当前条目的主类别匹配。 如果不是,请关闭上一个optgroup并为主类别打开一个新的optgroup,然后为当前子类别打开另一个。 然后将变量分配给当前的主要类别值,您应该一切顺利。 如果变量未定义(即第一次“回合”),则可能会跳过close标签。

像这样:

所以:

<select name="categories" class="form-control col-sm-12">
    <?php 
         $i = 0;
         $mainCatName = '';
         foreach(ProductModel::categories() as $category): 
         if($category->main_category != $mainCatName {
             $mainCatName = $category->main_category;
             if($i = 0) { ?>
                <optgroup label="<?php echo $category->main_category ?>">
             <?php } else {
                 </optgroup>
                 <optgroup label="<?php echo $category->main_category ?>">
             <?php }
         }
          ?>
      <option value="<?=System::escape($category->sub_category); ?>"><?=System::escape($category->sub_category); ?></option>
      <?php if($i = count(count(ProductModel::categories()) { ?>
         </optgroup>
      <?php } 
      $i++;?>
    <?php endforeach; ?>
</select>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM