Есть два массива:
$products
$attributes
В массивах содержится одинаковое количество элементов. Их может быть до 500 000 элементов.
Необходимо их объединить в один массив, чтобы потом можно было работать с ним. У них есть связующий элемент: product_id
Массив продуктов
$products = array(
[0] = array(
[product_id] => 102966
[price] => 11
)
[1] = array(
[product_id] => 102967
[price] => 22
)
)
Массив атрибутов
$attributes= array(
[0] = array(
[product_id] => 102966
[attr_name] => Диагональ;Длительность ролика
[attr_value] => 2";1 мин, 2 мин, 3 мин, 5 мин
)
[1] = array(
[product_id] => 102967
[attr_name] => Выходы;Диагональ;Дополнительная информация
[attr_value] => HDMI;2.7";рабочие диапазоны
)
)
Подскажите, как их объединить с учетом, чтобы это работало не слишком долго и не съело всю память
Есть решение: Но ест много ресурсов...
$products = array_map(function($product) use ( $attributes ) {
$attribute = array_filter($attributes, function($attribute) use ( $product ) {
return $attribute['product_id'] === $product['product_id'];
});
return array_merge($attribute ? current($attribute) : [], $product);
}, $products);
print_r($products);
Для каких целей это делается? Запрос к данному массиву будет у каждого юзера на сайте постоянно? Например при открытии корзины или страницы товаров?
Если да, то лучше создать отдельный файл, который выполняет ваш "ресурсоемкий код" и далее записывает построчный результат (соедененныого массива) в некую новую таблицу в базе. Установить этот файл в crontab и пускайте он запускается раз в минуту, раз в час и т.д. Время можете установить исходя из вероятности обновления $products и $attributes.
Как понимаем, речь об интернет магазине и вряд ли прям каждую минуту будут добавляться товары или новые атрибуты.
Ну а для самого пользователя выборка будет с конкретной таблице (а лучше к кешу) с уже готовым общим массивом.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Добрых времен суток и тд! Такая проблема: Я полнейший камень в PHP, просто дубИмеется следующая проблема - ОШИБКИ: