Подсчет значений в многомерном массиве в новый массив

В настоящее время у меня есть следующий массив:

Array
(
[0] => Array
    (
        [declaration_value] => 1
        [date] => 2018-07-16
        [client_id] => 3
        [declaration_id] => 12
    )

[1] => Array
    (
        [declaration_value] => 3
        [date] => 2018-07-16
        [client_id] => 3
        [declaration_id] => 12
    )

)

как я могу сделать, чтобы получить следующий результат массива: (счетчик_value_value, если та же дата / client_id / Declaration_id)

Array
(
[0] => Array
    (
        [declaration_value] => 4
        [date] => 2018-07-16
        [client_id] => 3
        [declaration_id] => 12
    )
)

посмотрите это - stackoverflow.com/questions/51320014

marmeladze 17.07.2018 16:38

Идея здесь в SO заключается в том, что вы пишете код! Если это не сработает так, как вы надеялись, вы обратитесь за помощью, и мы постараемся помочь вам исправить это. Но мы не пишем код для вас

RiggsFolly 17.07.2018 16:39

Практически почти во всех случаях, если в вашем вопросе нет кода, пытающегося закодировать решение, это не по теме

RiggsFolly 17.07.2018 16:40

Можете ли вы показать код, который создает этот массив? В идеале вы должны исправить этот код, чтобы он создавал нужный массив вместо того, чтобы создавать что-то, что вам не нужно, а затем исправлять его.

Don't Panic 17.07.2018 17:29

@marmeladze, это очень полезно, спасибо

Lisheng Ye 17.07.2018 18:53
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Symfony Station Communiqué - 7 июля 2023 г
Symfony Station Communiqué - 7 июля 2023 г
Это коммюнике первоначально появилось на Symfony Station .
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Установка и настройка Nginx и PHP на Ubuntu-сервере
Установка и настройка Nginx и PHP на Ubuntu-сервере
В этот раз я сделаю руководство по установке и настройке nginx и php на Ubuntu OS.
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
0
5
63
1

Ответы 1

$listdb = [
        ["declaration_value" => 1, "date" => "2018-07-16", "client_id" => 3, "declaration_id" => 12],
        ["declaration_value" => 2, "date" => "2018-07-16", "client_id" => 2, "declaration_id" => 12],
        ["declaration_value" => 2, "date" => "2018-07-16", "client_id" => 2, "declaration_id" => 12],
        ["declaration_value" => 8, "date" => "2018-07-17", "client_id" => 2, "declaration_id" => 12],
        ["declaration_value" => 3, "date" => "2018-07-16", "client_id" => 3, "declaration_id" => 12],
    ];

    $sameKeys = ["date", "client_id", "declaration_id"];
    $sumKeys = ["declaration_value"];
    print_r(sum_my($listdb, $sameKeys, $sumKeys));

function sum_my(array $listdb = [], array $sameKeys = [], array $sumKeys = []): array {
    $newdb = [];
    if (empty($listdb) === true || empty($sameKeys) === true || empty($sumKeys) === true) {
        return $newdb;
    }

    foreach ($listdb as $value) {
        $ckKey = "";
        foreach ($sameKeys as $sameKey) {
            $ckKey .= $value[$sameKey];
        }
        if (isset($newdb[$ckKey])) {
            foreach ($sumKeys as $sumKey) {
                $newdb[$ckKey][$sumKey] += $value[$sumKey];
            }
        } else {
            $newdb[$ckKey] = $value;
        }
    }

    return $newdb;
}

Спасибо за советы, я решил.

Другие вопросы по теме