Создание упрощенного списка из списка повторяющихся массивов в 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
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Как установить PHP на Mac
Как установить PHP на Mac
PHP - это популярный язык программирования, который используется для разработки веб-приложений. Если вы используете Mac и хотите разрабатывать...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout.
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для...
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
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 Документы - Коллекции - Доступные методы:

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