Комплексный многомерный массив - PullRequest
0 голосов
/ 11 ноября 2018

Я использую API для получения данных, и он возвращает данные в массиве массивов. Теперь я хочу получить нужные мне данные и перейти в новый массив.

  $shipments = Array
    (
      [0] => Array
        (
          [AmazonOrderId] => 12321313
          [SellerOrderId] => 
          [MarketplaceName] => Amazon.com
          [PostedDate] => 2018-10-01T14:21:46Z
          [ShipmentItemList] => Array
            (
              [0] => Array
                (
                  [SellerSKU] => 12-12321-1231
                  [OrderItemId] => 1212313
                  [QuantityShipped] => 1
                  [ItemChargeList] => Array
                    (
                      [0] => Array
                        (
                          [ChargeType] => Principal
                          [Amount] => 6.95
                          [CurrencyCode] => USD
                        )
                      [1] => Array
                        (
                          [ChargeType] => Principal
                          [Amount] => 6.95
                          [CurrencyCode] => USD
                         )
                     )
               )
          )
     )
 )

Я хочу получить сумму из самого внутреннего массива. Но я не могу перебрать весь вложенный массив и не могу найти решение. Я могу получить значение, что я хочу через этот код. но его получение 1, мне нужны динамические данные.

    function myfunction($products, $field, $value)
{
   foreach($products as $key => $product)
   {
      if ( $product[$field] === $value )
         return $key;
         var_dump($product[$field][0]['ItemChargeList'][0]['Amount']);
   }
   return false;
}

Также я попытался перебрать все массивы, но это выглядело так беспорядочно.

if($shipment){
    foreach($shipment as $shiptmentList){
        foreach($shiptmentList as $key => $shiporder){
            foreach($shiporder as $key => $itemcharge){
                foreach($itemcharge as $key=> $eachcharge){
                    var_dump($eachcharge[0]['Amount']);
                }
            }
       }
    }
}

Пожалуйста, скажите мне, как правильно перебирать предметы и получать необходимые мне суммы. Спасибо

1 Ответ

0 голосов
/ 11 ноября 2018

Если структура данных согласована, вы можете использовать что-то вроде этого:

 foreach($shipments as $shipment)
    foreach($shipment["ShipmentItemList"] as $itemList)
        foreach($itemList["ItemChargeList"] as $chargedItem) {
                echo $chargedItem["Amount"];
                echo print_r($chargedItem);
        }
...