Я пытаюсь распечатать вложенный список со структурой <ul><li>
, но сначала мне нужно правильно упорядочить свои данные. Я пытаюсь сделать это с помощью многомерных массивов, но я думаю, что мне нужен рекурсивный код. На самом деле я делаю это:
function array_key_exists_recursive(array $arr, $key) {
if (array_key_exists($key, $arr)) {
return true;
}
foreach ($arr as $element) {
if (is_array($element)) {
if (array_key_exists_recursive($element, $key)) {
return true;
}
}
}
return false;
}
$tags = array();
foreach($gallery as $gg){
$ftg = $gg['ftag']; //father category
$tg = $gg['tag']; //category
if(array_key_exists($ftg , $tags)) {
if(!in_array($tg, $tags[$ftg])) {
$tags[$ftg][$tg] = null;
}
}
else {
if(array_key_exists_recursive($tags, $ftg)) {
foreach($tags as $t=>$v) {
if(array_key_exists($ftg, $v)) {
$tags[$t][$ftg]= $tg;
};
}
}
else $tags[$ftg][$tg] = null;
}
}
Очевидно, что работает только со структурами данных 2-го уровня и отличается от того, что мне нужно .. Кто-то знает, как заставить этот код работать?
Обновить : извините, что не добавляю массив данных, я публикую небольшой пример здесь:
$gallery = array (
'0' => array (
'post-id' => 2,
'id' => 711,
'url' => 'http://localhost/wp-content/uploads/2019/12/WhatsApp-Video-2019-10-11-at-09.42.44.mp4',
'type' => 'video',
'album' => 'UNO',
'ftag' => 'Prova',
'tag' => 'Categoria di Prova',
'date' => '12/14/19'
),
'1' => array (
'post-id' => 2,
'id' => 341,
'url' => 'http://localhost/wp-content/uploads/2019/07/VID-20180925-WA0025.mp4',
'type' => 'video',
'album' => 'DUE',
'ftag' => 'Prova',
'tag' => 'Categoria dei Video',
'date' => '07/13/19'
),
'2' => array (
'post-id' => 2,
'id' => 614,
'url' => 'http://localhost/wp-content/uploads/2019/12/2-10-scaled.jpg',
'type' => 'image',
'album' => 'TRE',
'ftag' => 'Foto',
'tag' => 'Categoria delle foto',
'date' => '12/09/19',
'thumb' => 'http://localhost/wp-content/uploads/2019/12/thumb_400_2-10-scaled.jpg'
),
'3' => array (
'post-id' => 2,
'id' => 736,
'url' => 'http://localhost/wp-content/uploads/2020/01/iconfinder_camera-shutter_353402.png',
'type' => 'image',
'album' => 'QUATTRO',
'ftag' => 'Categoria delle foto',
'tag' => 'Categoria delle icone',
'date' => '01/29/20',
'thumb' => 'http://localhost/wp-content/uploads/2020/01/thumb_400_iconfinder_camera-shutter_353402.png'
),
'4' => array
(
'post-id' => 2,
'id' => 744,
'url' => 'http://localhost/wp-content/uploads/2020/02/DSC_0102-scaled.jpg',
'type' => 'image',
'album' => 'Titolo dell album',
'ftag' => 'Categoria delle icone',
'tag' => 'Terzo livello',
'date' => '02/03/20',
'thumb' => 'http://localhost/wp-content/uploads/2020/02/thumb_400_DSC_0102-scaled.jpg'
)
);
Теперь из этого я должен сделать массив только категорий (ftag и tag), где ftag является отцом Категория и тег - это категория. Я подумал, что я мог бы заказать «уровни» с какими-то вложенными массивами, чтобы потом распечатать данные со структурой, такой как:
<ul>
<li>Category</li>
<li>Category
<ul>
<li>Subcategory</li>
<li>Subcategory
<ul>
<li>3rd Level</li>
</ul>
</li>
</ul>
</li>
<li>Category</li>
</ul>