@ART4

Распарсить массив?

Добрый день, есть массив ссылка
Я хочу достать определённые значения
require_once('******/****/api/Okay.php');
    require_once(******/parsers/simple_html_dom.php');
    $okay = new Okay();

    $ch = curl_init('https://developerhub.alfabank.by:8273/partner/1.0.0/public/rates');
    curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
    curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, false);
    curl_setopt($ch, CURLOPT_HEADER, false);
    $html = curl_exec($ch);
    curl_close($ch);

    $json = json_decode($html, true);
    print_r($json);

    $usd = $json['rates'][2]['buyRate'];
    $rubl = $json['rates'][1]['buyRate'];

Где по индексу обращаюсь
$rubl = $json['rates'][1]['buyRate'];
Всё работает, но когда они меняются местами индексы, всё слетает (не то значение берёт), как можно привязать 1 раз и не смотря под каким индексом будет, всегда попадать в точку буду?
  • Вопрос задан
  • 70 просмотров
Пригласить эксперта
Ответы на вопрос 2
no_one_safe
@no_one_safe
Обратить внимание, что в получаемом объекте кроме buyRate есть ещё и buyIso и sellIso
Ответ написан
<?php

$data = json_decode(file_get_contents("https://developerhub.alfabank.by:8273/partner/1.0.0/public/rates"), true);
$result = ['usd' => 0, 'rub' => 0];

foreach ($data['rates'] as $rate) {
	if ($rate['sellIso'] == "USD" && $rate['buyIso'] == 'RUB') {
		$result['rub'] = $rate['buyRate'];
	}

	if ($rate['sellIso'] == "EUR" && $rate['buyIso'] == 'USD') {
		$result['usd'] = $rate['buyRate'];
	}
}

echo json_encode($result);
/*
	{"usd":1.23,"rub":76}
*/
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
LAPTOP.RU Москва
от 150 000 до 190 000 ₽
LAPTOP.RU Москва
от 130 000 до 170 000 ₽
LAPTOP.RU Кострома
от 25 000 до 65 000 ₽
04 мар. 2021, в 12:03
5000 руб./за проект
04 мар. 2021, в 11:35
3000 руб./за проект
04 мар. 2021, в 11:25
5000 руб./за проект