Seb1929
Seb1929

Reputation: 17

Json array, get first value from each array key

What i'm trying to do is get the each array key and then associate the first "price" and "quantity" with each array key. My array:

{
  "32557580": {
    "bids": [
      {
        "price": 2500,
        "quantity": 38265661
      },
      {
        "price": 2439,
        "quantity": 57414444
      },
      {
        "price": 2381,
        "quantity": 1092179
      },
      {
        "price": 2174,
        "quantity": 27140648
      }
    ],
    "offers": [
      {
        "price": 2564,
        "quantity": 33634591
      },
      {
        "price": 2597,
        "quantity": 27842125
      },
      {
        "price": 2632,
        "quantity": 925092
      },
      {
        "price": 2667,
        "quantity": 3565173
      },
      {
        "price": 2778,
        "quantity": 27589980
      }
    ]
  },
  "32557581": {
    "bids": [
      {
        "price": 4854,
        "quantity": 33786947
      },
      {
        "price": 4808,
        "quantity": 22881344
      },
      {
        "price": 4762,
        "quantity": 2513747
      },
      {
        "price": 4717,
        "quantity": 2650000
      },
      {
        "price": 4587,
        "quantity": 15714786
      }
    ],
    "offers": [
      {
        "price": 4950,
        "quantity": 31749492
      },
      {
        "price": 5000,
        "quantity": 3193999
      },
      {
        "price": 5051,
        "quantity": 2292463
      },
      {
        "price": 5102,
        "quantity": 34770816
      },
      {
        "price": 5128,
        "quantity": 2605693
      }
    ]
  },
  "32557582": {
    "bids": [
      {
        "price": 2532,
        "quantity": 60354703
      },
      {
        "price": 2500,
        "quantity": 113667648
      },
      {
        "price": 2439,
        "quantity": 5125100
      },
      {
        "price": 2222,
        "quantity": 120803051
      }
    ],
    "offers": [
      {
        "price": 2564,
        "quantity": 1492990
      },
      {
        "price": 2597,
        "quantity": 22121811
      },
      {
        "price": 2632,
        "quantity": 42119270
      },
      {
        "price": 2667,
        "quantity": 43680406
      },
      {
        "price": 2703,
        "quantity": 1176966
      }
    ]
  }
}

Example:

Id: 32557580
Price: 2500
Quantity: 38265661
Id: 32557581
Price: 4854
Quantity: 33786947

etc..

This is what i got so far

$obj = json_decode($result,true);
$all_keys = array_keys($obj);
foreach ($all_keys as $key => $value) {
    echo 'Id: '.$value.'<br>';
}

Output from this is:

Id: 32557580
Id: 32557581
Id: 32557582

I'm not really sure where to go from here, i have tried look at multiple questions and answers elswere. I tried adding another foreach inside the one i got but i only got the price and quantity from the first array key.

All help with getting me on the right track is appreciated.

Upvotes: 0

Views: 176

Answers (1)

AbraCadaver
AbraCadaver

Reputation: 78994

Just loop the main array and get the first from bids and use that:

foreach($obj as $key => $value) {
    $first = reset($value['bids']);
    echo "ID: $key<br />";
    echo "Price: " . $first['price'] . "<br />";
    echo "Quantity: " . $first['quantity'] . "<br />";
}

Or use the index, which in this case is 0 but may not always be depending on the JSON:

foreach($obj as $key => $value) {
    echo "ID: $key<br />";
    echo "Price: " . $value['bids'][0]['price'] . "<br />";
    echo "Quantity: " . $value['bids'][0]['quantity'] . "<br />";
}

Upvotes: 2

Related Questions