[英]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.