Как получить конкретные данные из JSON?

Получаю json в виде

$json = [{"id":"bitcoin","coin":"Bitcoin","coin_price":"126.4","date":"2013-09-09"},{"id":"bitcoin","coin":"Bitcoin","coin_price":"127.78","date":"2013-09-10"},{"id":"bitcoin","coin":"Bitcoin","coin_price":"131.65","date":"2013-09-11"}];

$data = json_decode($json, true);
print $data['0']['id']; // bitcoin

Как я могу получить значение coin_price на дату 2013-09-10?


Ответы (2 шт):

Автор решения: Anton Shchyrov

Обычным циклом

function getPrice($data, $date) {
  foreach ($data as $obj) {
    if ($obj['date'] === $date)
      return $obj['coin_price'];
  }
  return null;
}

print getPrice($data, '2013-09-10');
→ Ссылка
Автор решения: Dmitry Kozlov

Сначала отфильтровать массив по дате, потом создать новый массив, содержащий прайс(ы)

$founded = array_map(function ($a) {
    return $a['coin_price'];
}, array_filter($data, function($b) {
    return $b['date'] === '2013-09-10';
});
→ Ссылка