Как с помощью PHP трансформировать Json данные в маркированный список HTML с помощью тегов и - ?
Имеется следующая Json структура.
{
"menu": [
{
"level": "2"
},
{
"level": "2"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "4"
},
{
"level": "4"
},
{
"level": "4"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "4"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
}
]
}
Как с помощью PHP трансформировать его в маркированный список HTML с помощью тегов <ul> и <li>
уточнение:
все подряд "level": "3" после "level": "2" именно его подсписок ------ все подряд "level": "4" после "level": "3" именно его подсписок и так далее
Именно этот Json будет выглядеть так
- 2
- 2
- 2
- 3
- 3
- 3
- 4
- 4
- 4
- 2
- 3
- 3
- 3
- 4
- 2
- 3
- 3
Ответы (2 шт):
Автор решения: Denis640Kb
→ Ссылка
$Json = '{
"menu": [
{
"level": "2"
},
{
"level": "2"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "4"
},
{
"level": "4"
},
{
"level": "4"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "4"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
}
]
}';
$Arr1 = json_decode($Json);
echo '<ul>';
foreach ($Arr1->menu as $item){
echo '<li>'.$item->level.'</li>';
}
echo '</ul>';
Автор решения: Denis640Kb
→ Ссылка
<?php
$Json = '{
"menu": [
{
"level": "2"
},
{
"level": "2"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "4"
},
{
"level": "4"
},
{
"level": "4"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "3"
},
{
"level": "4"
},
{
"level": "2"
},
{
"level": "3"
},
{
"level": "3"
}
]
}';
$Arr1 = json_decode($Json);
$TempArr = [];
$val = 100;
foreach ($Arr1->menu as $item){
if($item->level < $val){
$val = $item->level;
}
$TempArr[] = $item->level;
}
echo '<ul>';
for ($i=0;$i<count($TempArr);$i++){
if (isset($TempArr[$i+1])){
//print_r($TempArr[$i]);
if($TempArr[$i] == $TempArr[$i+1]){
echo '<li>' . $TempArr[$i] . '</li>';
} elseif ($TempArr[$i] > $TempArr[$i+1]){
$val = $TempArr[$i]-$TempArr[$i+1];
echo '<li>'.$TempArr[$i].'</li>';
for ($i1=0;$i1<$val;$i1++) {
echo '</ul>';
}
} elseif ($TempArr[$i] < $TempArr[$i+1]){
echo '<li>'.$TempArr[$i].'</li><ul>';
}
} else {
echo '<li>'.$TempArr[$i].'</li>';
}
}
echo '</ul>';
Результат:
