@zxcursed

Как разделить/разбить ответ от базы на несколько массивов?

Доброго времени суток, в результате запроса к базе получают ответ (ниже таблица пример), как мне разбить этот ответ на массивы в зависимости от количества разных результатов столбца month?
AlAYmQo.png

На примере ответа выше должно быть в итоге 3 ответа/массива
  • Вопрос задан
  • 115 просмотров
Пригласить эксперта
Ответы на вопрос 2
TNPTSYWWCC
@TNPTSYWWCC
And I Told Them I Invented Times New Roman
<?php
$resultOfDataBase = [
    ["month" => 1, "value" => "1"],
    ["month" => 1, "value" => "2"],
    ["month" => 2, "value" => "3"],
    ["month" => 2, "value" => "4"],
    ["month" => 3, "value" => "5"],
    ["month" => 3, "value" => "6"],
];

$convertedData = array_reduce($resultOfDataBase, function ($c, $i) {
    $m = $i["month"];
    unset($i["month"]);
    $c[$m][] = $i;
    return $c;
}, []);

var_dump($convertedData);
Ответ написан
Immortal_pony
@Immortal_pony Куратор тега PHP
$fromDb = [
    ['id'=>1, 'day'=>2, 'month'=>1],
    ['id'=>2, 'day'=>22, 'month'=>3],
    ['id'=>2, 'day'=>31, 'month'=>2],
    ['id'=>4, 'day'=>12, 'month'=>2],
    ['id'=>5, 'day'=>4, 'month'=>3]
];

function groupBy(array $elements, callable $getUniqueKey) {
    $grouped = [];
    
    foreach ($elements as $element) {
        $uniqueKey = $getUniqueKey($element);
        $grouped[$uniqueKey][] = $element;
    }
    
    return $grouped;
}

$groupedByMonth = groupBy($fromDb, function($row) {
    return $row['month'];
});
Ответ написан
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы