我有这个问题,我想用 1 增加一个值并将其应用于我的 HTML,但我不能使用for()
orwhile()
循环(至少我认为我不能)。我正在定制一个电子商品程序(opencart),而我的 php 知识不足以解决这个问题。
有这个功能可以显示商店的类别。它使用一个通过 不断更新的变量$var .= "value"
。
到目前为止,我知道有多少子类别,但我不知道如何将此范围应用于我的 HTML。
我正在努力解决如下情况
<ul id="cats">
<li id="cat1">Cat
<ul id="sub1">
<li>item</li>
<li>item</li>
</ul>
</li>
<li id="cat2">Cat
<ul id="sub2">
<li>item</li>
<li>item</li>
</ul>
</li>
</ul>
我不知道如何增加第二个无序列表的计数。在生成第二个无序列表的代码下方。
[..]
$cPiD = strlen($parent_id);
if ($results) {
if ($parent_id == 0) {
$output .= '<ul id="cats">';
} else {
$output .= '<ul id="sub'.$cPiD.'">';
}
}
[..]
该变量$cPiD
保存子类别的总数(在本例中为 2)。我希望这个变量自动将正确的数字应用于无序列表(因此应用于id="sub1"
第一个无序列表和id="sub2"
第二个无序列表(如我上面的示例))。
问题是我不能for()
在零件之后使用循环else
,因为在我的 HTML 中我会得到两个 <ul>
标签而不是一个。
在这一切发生的 PHP 代码下方
$category_id = array_shift($this->path);
$output = '';
$results = $this->model_catalog_category->getCategories($parent_id);
$count = 0;
$cPiD = strlen($parent_id);
if ($results) {
if ($parent_id == 0) {
$output .= '<ul id="cats">';
} else {
$output .= '<ul id="sub'.$cPiD.'">';
}
}
foreach ($results as $result) {
$count++;
if (!$current_path) {
$new_path = $result['category_id'];
$output .= '<li id="cat'.$count.'">';
} else {
$new_path = $current_path . '_' . $result['category_id'];
$output .= '<li>';
}
$children = '';
$children = $this->getCategories($result['category_id'], $new_path);
$output .= $result['name'];
$output .= $children;
if (!$current_path) {
$output .= '</li>';
} else {
$output .= '</li>';
}
}
if ($results) {
if ($parent_id == 0) {
$output .= '</ul>';
} else {
$output .= '</ul>';
}
}
有人可能知道如何解决这个问题吗?
编辑:
哦,我尝试在循环中添加以下结构foreach()
,但是当某些类别没有任何子类别时会出现问题。
如果 (!$current_path) { $output .= '$result['name'] 。' <ul id="sub'.$count.'">'; }别的{ $output .= $result['name']; }