Есть ли лучший способ добавления значений одного и того же индекса массива в laravel с использованием foreach, который эффективно использует память?

Вот мой код для достижения: Значения $categoryRatings представляют собой следующие массивы:

$categoryRatings = array:2 [
   2 => array:2 [
     1 => 50.0
     2 => 35.0
   ]
   3 => array:2 [
     1 => 55.0
     2 => 45.0
   ]
 ]


$indexes = [];
    foreach ($categoryRatings as $categoryRating) {

        foreach ($categoryRating as $key => $value) {

            foreach ($categories as $category) {

                if ($category->id == $key) {

                    $indexes[$category->id] = isset($indexes[$category->id]) ? ($indexes[$category->id] + $value) : $value;
                }
            }
        }
    }

    $overAllCategoryRating = [];
    foreach ($categories as $category) {

        $overAllCategoryRating[$category->id] = $indexes[$category->id]/sizeof($categoryRatings);
    }

И вывод $overallCategoryRating равен:

array:2 [
  1 => 52.5
  2 => 40.0
]

$categories здесь — это коллекция, в которой я использовал идентификатор в качестве ключа, чтобы я мог назначать результаты его ключу для использования в моем внешнем интерфейсе.

Есть ли способы оптимизировать этот код для эффективного использования памяти, поскольку при вычислении больших данных он не будет быстро получать результаты из-за большого количества циклов foreach.

Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать 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
0
115
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

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

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

$first = collect($categoryRatings)->avg(1) // Result: 52.5
$second = collect($categoryRatings)->avg(2) // Result: 40.0

Привет, Хавьер, спасибо за правильный ответ. Как насчет того же самого, только трехмерного массива, на этот раз с некоторой строкой в ​​значениях массива, так что это смесь строковых и числовых значений. массив:2 [ 2 => массив:3 [ 1 => массив:2 [ 1 => 50,0 2 => 50,0 ] 2 => массив:1 [ 3 => 35,0 ] 3 => массив:1 [ 4 => " в процессе" ] ] 3 => массив:3 [ 1 => массив:2 [ 1 => 60,0 2 => 50,0 ] 2 => массив:1 [ 3 => 45,0 ] 3 => массив:1 [ 4 = > "в процессе" ] ] ]

Vic Andam 11.12.2020 08:05

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