ネストされた<select>に変換したい配列に苦労しています
私は欲しい:
<select>
<option value="1">Top1</option>
<option value="2">Top2</option>
<option value="9">Top3</option>
<option value="7"> - - Top3.1</option>
<option value="5"> - - Top3.2</option>
<option value="12">- - - - Top3.2.1</option>
<option value="6">Top4</option>
<option value="4">Top5</option>
<option value="8"> - - Top5.1</option>
<option value="3"> - - Top5.2</option>
すべてが選択可能であるため、optgroupを使用できません。私の知る限り、optgroupラベルを選択することはできません。
私の配列は次のようになります。
[44] => Array
(
[id] => 1
[name] => Test
[slug] => test
[parent] => 0
)
[45] => Array
(
[id] => 2
[name] => Test-Sub
[slug] => test-sub
[parent] => 1
)
[46] => Array
(
[id] => 3
[name] => Test-Sub-Sub
[slug] => test-sub-sub
[parent] => 2
)
何十ものバリエーションを試したような気がしますが、フォーム選択を正しく作成できません。
それが私の最後の試みでした:
function toDropdown($arr)
{
foreach ($arr as $row) {
$cat[$row['id']] = $row['name'];
if ($row['parent'] != 0) {
$cat[$row['id']] = '--' . $row['name'];
}
}
return $cat;
}
しかし、このように、それはIDによって順序付けられ、ネストはその意味を失います。
私は続けようとしますが、誰かが助けてくれるなら、私はどんな助けにも感謝します!
編集:PHPデータ
DBからすべてのカテゴリを取得する私の関数:
function get_categories($parent = 'all')
{
$this->db->select('categories.id, categories.name, categories.slug, categories.parent');
$this->db->from('categories');
if ($query = $this->db->get())
{
return $query->result_array();
}
return FALSE;
}
私のview.php、ここで私はすべてのデータを出力します:
$query = $this->datei_model->get_categories('all');
foreach ($query as $row)
{
$parents[] = $row;
}
$tree = buildTree($parents);
print("<select>\n");
printTree($tree);
print("</select>");