Создание упрощенного списка из списка повторяющихся массивов в Php

Например, вот мой список заказов:

Cup red --------> 2
TV-1 -----------> 1
TV-1 -----------> 1
Table ----------> 1
Table ----------> 1
Cup white ------> 1 
Cup white ------> 3
Cup green ------> 4 

Ожидаемый результат:

Cup red --------> 2
TV-1 -----------> 2
Table ----------> 2
Cup white ------> 4
Cup green ------> 4

Можете ли вы показать мне свои идеи или любые те же проблемы?

взгляните на array_merge

André Walker 20.12.2020 20:18

Можете ли вы показать, как на самом деле настроен ваш массив.

Nigel Ren 20.12.2020 20:21

откуда такой массив

Waleed Muaz 20.12.2020 20:39
Стоит ли изучать 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 и хотите разрабатывать...
1
3
85
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Ответ принят как подходящий

Предполагая, что ваш исходный массив выглядит так:

$arr = [
    ['Cup red' => 2], ['TV-1' => 1], ['TV-1' => 1], ['Table' => 1], ['Table' => 1], ['Cup white' => 1],
    ['Cup white' => 3], ['Cup green' => 4],
];

Затем вы можете использовать:

$keyStore = [];
foreach($arr as $record) {
    foreach($record as $key => $value) {
        $keyStore[$key] = $key;
    }
}

$result = [];
foreach ($arr as $key0 => $value) {
    foreach ($value as $key1 => $item) {
        if (in_array($key1, $keyStore)) {
            $result[$key1] = isset($result[$key1]) ? $result[$key1] += $item : $result[$key1] = $item;
        }
    }
}

Выход print_r($result): Множество

(
    [Cup red] => 2
    [TV-1] => 2
    [Table] => 2
    [Cup white] => 4
    [Cup green] => 4
)

демо

Если мы предположим, что ваш список представляет собой массив массивов:

$array = [
    ['Cup red' => 2],
    ...
];

Вы можете сделать это с помощью методов Collection довольно легко:

collect($array)->mapToGroups(fn ($i) => $i)
    ->map->sum()
    ->all()

После mapToGroups у вас есть такая структура:

[
    'Cup red' => [2],
    'Cup white' => [1, 3],
    ...
]

Затем вы можете использовать map для повторения каждого из них, чтобы получить суммы.

Laravel 8.x Документы - Коллекции - Доступные методы:

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