Я следующий массив, который должен отображаться как навигацияОтображение массива списка смежности с помощью PHP
[items] => Array
(
[Electronics] => Array
(
[level2] => Array
(
[Home Use] => Array
(
[level3] => Array
(
[Laptops] => Array
(
[level4] => Array
(
[0] => HP A very simple laptop
[1] => HP Tablet
[2] => Acer Laptop
)
)
[Desktops] => Array
(
[level4] => Array
(
[0] => Acer Tablet
)
)
[Tablets] => Array
(
[level4] => Array
(
[0] =>
)
)
)
)
[Business] => Array
(
[level3] => Array
(
[Tablets] => Array
(
[level4] => Array
(
[0] => HP A very simple laptop
[1] => HP Tablet
[2] => Touchmate
)
)
[Laptops] => Array
(
[level4] => Array
(
[0] => Compaq
[1] => IBM
)
)
[Desktop] => Array
(
[level4] => Array
(
[0] => Lenovo
)
)
)
)
)
)
[Hotels] => Array
(
[level2] => Array
(
[5 Stars] => Array
(
[level3] => Array
(
[Daily Basis] => Array
(
[level4] => Array
(
[0] => Hilton
)
)
[Montly Basis] => Array
(
[level4] => Array
(
[0] => Hilton
[1] => Intercon
[2] => Marina Hotel
[3] => Galaxy Plaza Hotel
)
)
)
)
[4 Stars] => Array
(
[level3] => Array
(
[Daily Basis] => Array
(
[level4] => Array
(
[0] => Address
)
)
[Montly Basis] => Array
(
[level4] => Array
(
[0] => Armada Al Barsha Hotel
[1] => Everest International Hotel
[2] => New Hotel
[3] => Good Hotel
)
)
)
)
[3 Stars] => Array
(
[level3] => Array
(
[Daily Basis] => Array
(
[level4] => Array
(
[0] => Royal Garden Hotel
)
)
[Montly Basis] => Array
(
[level4] => Array
(
[0] => Galaxy Plaza Hotel
)
)
)
)
)
)
[Entertainment] => Array
(
[level2] => Array
(
[] => Array
(
[level3] => Array
(
[] => Array
(
[level4] => Array
(
[0] =>
)
)
)
)
)
)
[Services] => Array
(
[level2] => Array
(
[] => Array
(
[level3] => Array
(
[] => Array
(
[level4] => Array
(
[0] =>
)
)
)
)
)
)
)
)
сейчас ... Я хочу, чтобы отобразить это в неупорядоченном списке. У меня есть следующая функция.
public function display($sorted_array)
{
$markup = '';
foreach ($sorted_array as $key => $value)
{
if($key === 'Electronics' || $key ==='Hotels' || $key === 'Services' || $key === 'Entertainment')
{
$markup .= '<h1><li>';
}
$markup .= (is_array($value)) ? '<b>'.$key.'</b></li></ul></h1>'.$this->display($value) : '<ul><li>'.$value. '</li></ul>';
}
return '<ul>'.$markup . '</ul>';
}
Electronics
Home Use
Laptops
HP A very simple laptop
HP Tablet
Acer Laptop
Настольные компьютеры
Acer Tablet
таблетки
Бизнес
Tablets
HP A very simple laptop
HP Tablet
Touchmate
Ноутбуки
Compaq
IBM
Desktop
Lenovo
Отели
5 Stars
Daily Basis
Hilton
Все категории и подкатегории отображается в правильном порядке. Тем не менее, мне нужно знать, где я должен добавить идентификатор, чтобы добавить стили в подкатегории и поместить их соответствующим образом.
Я пробовал это, но он присваивает level1 всем листовым узлам (последние узлы без дочернего элемента). Это рекурсивная функция. Если текущий ключ является массивом, имя ключа печатается, и массив снова передается в одну и ту же функцию, поэтому, когда текущий ключ является значением, он печатается. Проблема заключается в том, что на одной итерации значение должно быть печать может быть любой; родительский, дочерний, дочерний, суб-дочерний или ведущий узел. Как узнать уровни сейчас? –
Итак, на одной итерации печатается ключ или значение VALUE. Массив организован и отлично отпечатан в правильном порядке. Все, что я хочу, это установить соответствующие идентификаторы, чтобы я мог стилизовать их как стандартную навигацию категорий и подкатегорий. –
Этот уровень вещь должен работать. Поскольку ваша функция итеративна, она будет увеличиваться при повторном вызове функции. Я редактировал свой вопрос. Теперь каждый элемент 'li' будет иметь идентификатор. –