Я создаю функцию, которая с помощью API вызывает db и возвращает мне данные JSON. В json есть заказы, и я уже декодировал их в массиве php. У каждого заказа есть такие свойства, как product_id и количество. Я хочу временно сохранить где-нибудь свойство "количество", потому что мне нужно суммировать все продукты с одним и тем же product_id. Есть предложения, как это сделать?
Вы спрашиваете, как хранить их между запросами или во время одного запроса?
Почему бы просто не создать функцию, которая даст желаемый результат? Поскольку у вас есть все, что хранится в базе данных, вы можете просто выполнить простой запрос, чтобы получить этот результат.
Сессии или файлы cookie могут использоваться для временного хранения данных.
@MagnusEriksson Я не хочу делать это с запросом к базе данных, потому что я хочу делать это с помощью API. Это важно для сохранности данных. Ключ API есть только у меня.
@JonStirling Да, я уверен.
@phpfresher у вас есть более конкретное предложение? или учебник?
@TasosSeit ... Что-то вроде $_SESSION["session_name"] = "YOUR DATA HERE"; .. и более поздний доступ к этим данным с помощью $_SESSION["session_name"]
Оказывается на ваш вопрос был дан ответ. Помните, что SO - это не служба кодирования. Если ответ позволяет вам исправить вашу конкретную реализацию, это ответ. Отметьте это как таковое. Перед следующим вопросом прочтите Как создать минимальный, полный и проверяемый пример и Как спросить.






Вы можете использовать переменную сеанса для хранения этих значений.
Что делать, если список большой или / и если OP выполняет скрипт из CLI?
чем простая обработка файлов - лучший вариант. хранить данные в текстовом файле.
Если данных много, было бы лучше сохранить их в базе данных (или просто сделать запрос к БД напрямую, чтобы получить информацию). Дело в том, что, поскольку OP не предоставил нам достаточно информации, любые предложения / ответы - просто дикие догадки.
Я немного тороплюсь, но хочу посмотреть, могу ли я вам помочь.
$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,
];
Если это решило вашу проблему, не могли бы вы отметить ее как решенную?
нет, но это очень помогло, я не могу проголосовать за ваш ответ из-за низкой репутации.
Код, который я предоставил, отвечает на вопрос. Вы хотели «просуммировать все продукты с одним и тем же product_id», что можно сделать с помощью приведенного выше кода. Если вам нужно что-то еще сделать с этими данными сейчас, задайте новый вопрос о том, что еще вам нужно, и отметьте этот вопрос как решенный.
Вы наверняка уже временно храните их в массиве php?