Извлечение элементов из таблицы данных и суммирование одинаковых элементов - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть таблица "заказов" от woocommerce.Я отфильтровал и отсортировал элементы по статусу с помощью запроса GET .Результаты копируются в файл JSON .

Итак, я хочу найти элементы с одинаковым «product_id» и их значениями и суммировать их для отображения на экране, чтобы я мог их распечатать.

Например:

"product_id": 45329, "ification_id ": 0," количество ": 1

" product_id ": 48911," изменение_id ": 0," количество ": 1,

"product_id": 45329, "ification_id ": 0," количество ": 1

Результат, который я хочу получить, таков:

45329 количество 2
48911 количество 1

спасибо!

1 Ответ

0 голосов
/ 17 декабря 2018

Расшифруйте JSON с помощью json_decode() и выполните расчеты.В следующем примере используются упрощенные данные JSON, которые, я думаю, соответствуют формату из WooCommerce (я полагаю, этот формат взят из GET-запроса списка заказов):

<?php
# JSON
$json = '
[
  {
    "id": 727,
    "line_items": [
      {
        "id": 315,
        "name": "Woo Single #1",
        "product_id": 93,
        "variation_id": 0,
        "quantity": 2,
        "tax_class": "",
        "subtotal": "6.00",
        "subtotal_tax": "0.45",
        "total": "6.00",
        "total_tax": "0.45",
        "taxes": [
          {
            "id": 75,
            "total": "0.45",
            "subtotal": "0.45"
          }
        ],
        "meta_data": [],
        "sku": "",
        "price": 3
      },
      {
        "id": 316,
        "name": "Ship Your Idea &ndash; Color: Black, Size: M Test",
        "product_id": 22,
        "variation_id": 23,
        "quantity": 1,
        "tax_class": "",
        "subtotal": "12.00",
        "subtotal_tax": "0.90",
        "total": "12.00",
        "total_tax": "0.90",
        "taxes": [
          {
            "id": 75,
            "total": "0.9",
            "subtotal": "0.9"
          }
        ],
        "meta_data": [
          {
            "id": 2095,
            "key": "pa_color",
            "value": "black"
          },
          {
            "id": 2096,
            "key": "size",
            "value": "M Test"
          }
        ],
        "sku": "Bar3",
        "price": 12
      }
    ]
  }
]';
$input = json_decode($json, true);

# Sum
$output = array();
foreach ($input as $order) {
    foreach ($order["line_items"] as $item) {
        $product_id = $item['product_id'];
        $quantity   = $item['quantity'];
        if (!array_key_exists($product_id, $output)) {
            $output[$product_id] = 0;
        }   
        $output[$product_id] += $quantity;
    }   
}

#Output
foreach ($output as $key => $value) {
    echo $key.' quantity '.$value.'<br>';
}   
?>

Вывод:

93 quantity 2
22 quantity 1
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...