値を 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>
2 番目の順序付けられていないリストの数を増やす方法がわかりません。2 番目の順序付けられていないリストが生成されるコードの下。
[..]
$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"
2番目のリストに適用します(上記の例のように))。
問題は、HTMLで 1 つではなく2 つのタグを取得するためfor()
、パーツの後にループを使用できないことです。else
<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()
ループに次の構造を追加しようとしましたが、特定のカテゴリにサブカテゴリがない場合に問題が発生しました。
if (!$current_path) { $output .= '$result['name'] . ' <ul id="sub'.$count.'">'; }そうしないと{ $output .= $result['名前']; }