Задать вопрос
@lexstile

Как посчитать сумму позиций из 2-х источников?

Как найти общую сумму позиций?
Дано 2 массива, в одном лежит количество, во втором стоимость 1 позиции, их нужно перемножить. Связаны между собой по id.
Я могу сделать это через цикл в цикле, но хочется найти более элегантное решение.
$dishesRequest = collect([
            [
                'id' => 1,
                'quantity' => 4,
            ],
            [
                'id' => 2,
                'quantity' => 8,
            ],
        ]);

        $dishes = collect([
            [
                'id' => 1,
                'price' => 100,
            ],
            [
                'id' => 2,
                'price' => 200,
            ],
        ]);

* collect - коллекция из laravel.
  • Вопрос задан
  • 202 просмотра
Подписаться 1 Простой 22 комментария
Решения вопроса 1
ipatiev
@ipatiev Куратор тега PHP
Потомок старинного рода Ипатьевых-Колотитьевых
В общем случае избежать "цикла в цикле" позволяет использование индексации массива идентификатором и - соответственно - обращение по индексу вместо перебора.
В данном случае вторую коллекцию проиндексировать можно с помощью метода keyBy('id');

И тогда останется только один цикл по первому массиву, в котором обращаться ко второму по id.
То есть сложность будет длина массива * 2 вместо длина массива * длина массива

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

spoiler
Типичный, кстати, вопрос из серии "Выучил ларавель, не выучил программировать"
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы