Как вывести данные массива в разные блоки по ключу?

Делаю форму с пошаговым заполнением, поля формы берутся из БД в виде массива (для примера):

Array (
    [0] => Array (
        [id] => 20 [text] =>Какой то текст [category_id] => 7 )
    [1] => Array (
        [id] => 22 [text] => Какой то текст [category_id] => 7 )
    [2] => Array (
        [id] => 21 [text] => Какой то текст [category_id] => 8 )
)

Нужно вывести эти данные по разным блокам <fieldset>, на основании category_id. Т.е. данные из category_id = 7 вывести в один<fieldset>, потом его закрыть и данные из category_id = 8 в другой <fieldset> и т.д. Кол-во категорий заранее не известно, т.е. тут явно должен быть перебор, но вот как это сделать - ума не приложу.
  • Вопрос задан
  • 134 просмотра
Решения вопроса 1
0xD34F
@0xD34F
$grouped = [];

foreach ($arr as $n) {
  $grouped[$n['category_id']][] = $n['text'];
}

foreach ($grouped as $key => $values) {
  echo "
    <fieldset>
      <legend>$key</legend>".
      implode('', array_map(fn($n) => "<div>$n</div>", $values))."
    </fieldset>";
}
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы