我正在尝试将子类别与其各自的父类别进行匹配。现在我只是在视图(书籍,衣服等)的主要类别中硬编码并且具有获取所有子类别的功能,然后在视图中我可以创建一个while循环以匹配每个子类别与其主要类别。
我已经设法将我想要的数据放入一个数组中,现在看起来像这样:
array
1 =>
array
1 => string 'Medicine'
2 => string 'Fairy tales'
3 => string 'Novels'
2 =>
array
44 => string 'Men's Clothing'
45 => string 'Men's Accessories'
49 => string 'Women's Swimwear'
50 => string 'Boys'
51 => string 'Girls'
3 =>
array
52 => string 'Perfume Sprays'
53 => string 'Roll ons'
54 => string 'Deodorants'
64 => string 'Miscellaneous'
其中1,2,3是主类别ID,而内部数组对应于subcat_id => subcat_name。
我在我的模型中通过以下内容得到了这个数组:
function getsub()
{
$this->db->select('sub_id,sub_name,cat_id');
$q = $this->db->get('subcategories');
$subcats = array();
foreach($q->result() as $row)
{
$subcats[$row->cat_id][$row->sub_id] = $row->sub_name;
}
return $subcats;
}
然后在我看来,在我所拥有的任何类别下,我都会创建一个while循环来显示与cat_id匹配的所有子类别:
<ul class="dropdown-menu">
<?php while($subcats['cat_id'] == 1)?>
<?php{?>
<li><a href="main/sub_prod/<?php echo $subcats['sub_id'];?>">
<?php echo $subcats['sub_name'];?></a></li>
<?php}?>
</ul>
但是我在每个列表项的行上都出错了,说'undefined index:'subcat_name'。对于该列表项中的subcat_id也是如此。有人能告诉我什么是错的吗?谢谢
答案 0 :(得分:2)
试试这个:
<ul class="dropdown-menu">
<?php $i=0;
while($subcategories[$i]['cat_id'] == 1){?>
<li><a href="customer/subcat_products/<?php echo $subcategories[$i]['subcat_id'];?>">
<?php echo $subcategories[$i]['subcat_name'];?></a></li>
<?php $i++;
}?>
</ul>
我添加了一个计数器,$ i变量。 while循环不迭代数组
答案 1 :(得分:1)
它与您尝试访问数组元素的方式有关。您将其指定为
$subcategories[cat_id][subcat_id]
但是以
的形式访问它$subcategories['subcat_id/name']
这有两个方面是错误的:
你引入的另一个问题是你有一个无限循环。修复此问题的一个好方法是使用foreach循环,就像模型中的循环一样。
<?php foreach ($subcategories as $subcategory): ?>
<ul class="dropdown-menu">
<?php foreach ($subcategory as $subcat_id => $subcat_name):
<li><a href="customer/subcat_products/<?php echo $subcat_id; ?>">
<?php echo $subcat_name; ?></a></li>
<?php endforeach; ?>
</ul>
<?php endforeach; ?>
这将遍历所有类别,打印出一个无序列表,每个子类别都作为列表项。