Encodera

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.

Как сгруппировать массив по значению поля

Короткий ответ

Пройдите массив циклом и складывайте элементы в подмассив с нужным ключом:

<?php
 
$products = [
    ['title' => 'Tea', 'category' => 'drinks'],
    ['title' => 'Bread', 'category' => 'food'],
    ['title' => 'Coffee', 'category' => 'drinks'],
];
 
$groups = [];
 
foreach ($products as $product) {
    $groups[$product['category']][] = $product['title'];
}
 
echo json_encode($groups);

Результат:

{"drinks":["Tea","Coffee"],"food":["Bread"]}

Количество в каждой группе

Если нужны только числа, хватит array_column() и array_count_values():

<?php
 
$products = [
    ['title' => 'Tea', 'category' => 'drinks'],
    ['title' => 'Bread', 'category' => 'food'],
    ['title' => 'Coffee', 'category' => 'drinks'],
];
 
echo json_encode(array_count_values(array_column($products, 'category')));

Результат:

{"drinks":2,"food":1}

Функции из этого ответа

  • array_column — Достаёт значения одного ключа из массива массивов.
  • array_count_values — Считает, сколько раз встречается каждое значение.
  • array_keys — Возвращает все ключи массива.

Спасибо, что читаете!

Пожертвуйте сайту, мы стараемся ради вас.