Как я могу «временно» сохранить некоторые значения из декодированной таблицы JSON?

Я создаю функцию, которая с помощью API вызывает db и возвращает мне данные JSON. В json есть заказы, и я уже декодировал их в массиве php. У каждого заказа есть такие свойства, как product_id и количество. Я хочу временно сохранить где-нибудь свойство "количество", потому что мне нужно суммировать все продукты с одним и тем же product_id. Есть предложения, как это сделать?

Вы наверняка уже временно храните их в массиве php?

Jonnix 04.01.2019 15:24

Вы спрашиваете, как хранить их между запросами или во время одного запроса?

M. Eriksson 04.01.2019 15:25

Почему бы просто не создать функцию, которая даст желаемый результат? Поскольку у вас есть все, что хранится в базе данных, вы можете просто выполнить простой запрос, чтобы получить этот результат.

M. Eriksson 04.01.2019 15:28

Сессии или файлы cookie могут использоваться для временного хранения данных.

phpfresher 04.01.2019 15:30

@MagnusEriksson Я не хочу делать это с запросом к базе данных, потому что я хочу делать это с помощью API. Это важно для сохранности данных. Ключ API есть только у меня.

Tasos Seit 04.01.2019 15:33

@JonStirling Да, я уверен.

Tasos Seit 04.01.2019 15:33
«Это важно для безопасности данных» - В этом нет смысла. Вы только что сказали, что создаете функцию API для получения данных, которые собираетесь использовать для вычислений, так что делать другую функцию API, которая также дает вам итоговые данные? В любом случае вам все равно нужно предоставить нам больше информации, прежде чем мы сможем дать некоторые конструктивные предложения. Это по запросу? За сеанс пользователя? Глобально для всех пользователей?
M. Eriksson 04.01.2019 15:34

@phpfresher у вас есть более конкретное предложение? или учебник?

Tasos Seit 04.01.2019 15:34

@TasosSeit ... Что-то вроде $_SESSION["session_name"] = "YOUR DATA HERE"; .. и более поздний доступ к этим данным с помощью $_SESSION["session_name"]

phpfresher 04.01.2019 15:42
imgur.com/a/0RwsPsJ Этот массив создается вручную и динамически вызывает свойства из базы данных. Я хотел бы суммировать количество одинаковых продуктов.
Tasos Seit 04.01.2019 15:52

Оказывается на ваш вопрос был дан ответ. Помните, что SO - это не служба кодирования. Если ответ позволяет вам исправить вашу конкретную реализацию, это ответ. Отметьте это как таковое. Перед следующим вопросом прочтите Как создать минимальный, полный и проверяемый пример и Как спросить.

rkeet 10.01.2019 09:54
Стоит ли изучать 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 и хотите разрабатывать...
4
11
69
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете использовать переменную сеанса для хранения этих значений.

Что делать, если список большой или / и если OP выполняет скрипт из CLI?

M. Eriksson 04.01.2019 15:26

чем простая обработка файлов - лучший вариант. хранить данные в текстовом файле.

Zahid Iqbal 04.01.2019 15:28

Если данных много, было бы лучше сохранить их в базе данных (или просто сделать запрос к БД напрямую, чтобы получить информацию). Дело в том, что, поскольку OP не предоставил нам достаточно информации, любые предложения / ответы - просто дикие догадки.

M. Eriksson 04.01.2019 15:29
Ответ принят как подходящий

Я немного тороплюсь, но хочу посмотреть, могу ли я вам помочь.

$quantities = [];

//Loop through all the orders
foreach ($orders as $order) {
    //Loop through the orderrows
    foreach ($order->getOrderRows() as $orderRow) {
        if (array_key_exists($orderRow->getProductName(), $quantities)) {
            //The product is already in the quantities array, so the quantity of this orderrow is added to the total
            $quantities[$orderRow->getProductName()] =
                ($quantities[$orderRow->getProductName()] + (int) $orderRow->getItemQuantity());
        } else {
            //If this is the first time the product is encountered add the product and its quantity to the quantities array
            $quantities[$orderRow->getProductName()] = (int) $orderRow->getItemQuantity();
        }
    }
}

Это будет иметь следующий результат, показывающий названия продуктов вместе с их количеством:

$quantities = [
    'foo' => 12,
    'bar' => 3,
];

Если это решило вашу проблему, не могли бы вы отметить ее как решенную?

lucid 09.01.2019 15:09

нет, но это очень помогло, я не могу проголосовать за ваш ответ из-за низкой репутации.

Tasos Seit 10.01.2019 09:41

Код, который я предоставил, отвечает на вопрос. Вы хотели «просуммировать все продукты с одним и тем же product_id», что можно сделать с помощью приведенного выше кода. Если вам нужно что-то еще сделать с этими данными сейчас, задайте новый вопрос о том, что еще вам нужно, и отметьте этот вопрос как решенный.

lucid 10.01.2019 09:51

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