Раньше я делал это, добавляя
к содержимому каждого вложенного параметра.
$spacer = ' ';
while (list($id, $parent_id, $category) = mysqli_fetch_array($r, MYSQLI_NUM)) {
$padding = str_repeat($spacer, $depth);
// Add to the select menu:
echo '<option value="' . $id . '">' . $padding . $category . '</option>\n';
}
Где $depth
представляет собой "шаги", параметр должен иметь отступ.
Способ, которым я достиг этого, состоял в том, чтобы сначала поместить мои параметры в многомерный массив, где дочерние элементы хранятся в виде массива родительских элементов ...
Как это:
Array(
1 => Array(
'name' => 'Apple'
),
2 => 'Arts & Entertainment',
'children' => Array(
1 => Array(
'name' => 'Amusement'
),
2 => Array(
'name' => 'Art'
),
3 => Array(
'name' => 'Artists'
'children' => Array(
1 => Array(
'name' => 'A',
'children' => Array(
1 => Array(
'name' => 'a1'
)
)
)
)
)
)
)
)
Затем я пробегаю массив с помощью рекурсивной функции, которая входит в каждый вложенный массив (если есть) и добавляет $padding
к значению 'name'
, оборачивает теги параметров вокруг него и возвращает его.Возвращенная строка добавляется к возврату всех предыдущих вызовов, и у вас остается меню с отступом.Магия.