Вывод массива PHP с оформлением списков
Потребовалось вывести все элементы массива в читабельном виде, и чтобы в дальнейшем была возможность прикручивать функционал для элементов массива ( но это другая история 😉 )
Да, мало в каких случаях может пригодиться, но если ты читаешь это, то возможно ты один из тех, кому такое понадобилось.
Итак, поехали…
Мы имеем массив
$array = [ 'id' => 1, 'name' => 'First Project', 'data' => [ 'style' => [ 'color' => 'white' ], 'page_count' => 10 ] ];
Массив многомерный, и вывод должен быть соответствующий. ДА, можно вывести так:
print_r($array);
или так:
var_dump($array);
А если Вы используете Laravel, то так:
dd($array);
НО…
Как я уже говорил, должна быть возможность прикручивать функционал к каждому элементу. А значит будем использовать рекурсию
function arrayAlignment($array, $text = '') { $text .= '<ul class="alignment__ul">'; foreach ($array as $key=>$arr) { $text .= '<li>'; if(!is_array($arr)) { $text .= $key . ': ' . $arr; } else { $text .= $key . ': <span class="alignment__caret"><i class="fa fa-caret-right"></i> Array</span>' . arrayAlignment($arr); } $text .= '</li>'; } $text .= '</ul>'; return $text; }
Как работает функция, думаю понятно, теперь немного стиля
.alignment { background-color: #3B4650; font-size: 12px; padding: 10px; color: #DCDEE0; } .alignment__caret { color: #00FFA9; cursor: pointer; } .alignment__ul { list-style: none; margin: 0; padding: 0; } .alignment__ul li ul { margin-left: 10px; display: none; }
В стиле скрываем второстепенные списки. Теперь нам нужна возможность при клике, открывать скрытые списки. Напишем небольшой JS
$('.alignment__caret').click(function(e) { $(this).closest('li').find('ul:first').slideToggle(); });
Готово!
Запускаем функцию с массивом
echo '<div class="alignment">'; echo arrayAlignment($array); echo '</div>';
У меня всё работает, а у тебя? 🙂
Успехов в коде 😉
Добавить комментарий