Выборка JSON в цикле.

123 4
seosniks
На сайте с 13.08.2007
Offline
389
1397

Добрый день.

Помогите получить значения в переменныю.

есть JSON

{"BTC_USD":{"buy_price":"9800","sell_price":"9810","last_trade":"9800","high":"9999.99999999","low":"8750","avg":"9369.77935875","vol":"1434.62464539","vol_curr":"14059321.52483837","updated":1520672039},"BTC_EUR":{"buy_price":"8050.0131362","sell_price":"8122.626233","last_trade":"8084.66","high":"8236.94144169","low":"7223.67016301","avg":"7736.54522569","vol":"353.79896428","vol_curr":"2860344.33457491","updated":1520672045},"BTC_RUB":{"buy_price":"519753.64304208","sell_price":"521986.4735199","last_trade":"520370","high":"527800","low":"480045","avg":"505195.68830297","vol":"931.33163086","vol_curr":"484637040.75238693","updated":1520672043}

преобразование строки в формате json в массив

 $balanc = json_decode($res, true);  


print_r( $balanc );

после обработки имеем


Array
(
[BTC_USD] => Array
(
[buy_price] => 9727.000002
[sell_price] => 9750
[last_trade] => 9748
[high] => 9999.99999999
[low] => 8750
[avg] => 9377.85222666
[vol] => 1428.41826438
[vol_curr] => 13924221.24127211
[updated] => 1520672655
)

[BTC_EUR] => Array
(
[buy_price] => 8035.96
[sell_price] => 8066.06499796
[last_trade] => 8035.96
[high] => 8236.94144169
[low] => 7223.67016301
[avg] => 7743.61692458
[vol] => 354.27069943
[vol_curr] => 2846905.1697952
[updated] => 1520672474
)

[BTC_RUB] => Array
(
[buy_price] => 516105.4683153
[sell_price] => 520119.0276346
[last_trade] => 516084.747105
[high] => 527800
[low] => 480045
[avg] => 505484.20855157
[vol] => 936.85976744
[vol_curr] => 483499036.15685177
[updated] => 1520672662
)

Мне необходимо получить данные [buy_price] => 516105.4683153 из [BTC_RUB]

и передать в переменную.

например как то так

foreach($balanc   as $key =>  $value)


{

echo $buy_price= $value["buy_price"] ;//текущая максимальная цена покупки

}

Подскажите пожалуйста как это сделать?

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#1

А зачем перебор?! Просто вызвать нужный элемент нельзя чтоли?

✅ Мой Телеграм канал по SEO, оптимизации сайтов и серверов: https://t.me/leonidukgLIVE ✅ Качественное и рабочее размещение SEO статей СНГ и Бурж: https://getmanylinks.ru/
seosniks
На сайте с 13.08.2007
Offline
389
#2
LEOnidUKG:
А зачем перебор?! Просто вызвать нужный элемент нельзя чтоли?

Если можно пример, спасибо.

Вызвать могу нужный так. $out= $balanc["BTC_USD"]["buy_price"];

только нужно в цикле забить таблицу.

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#3

Вы серьёзно?!

echo $balanc['BTC_RUB']['buy_price'];

seosniks
На сайте с 13.08.2007
Offline
389
#4
LEOnidUKG:
Вы серьёзно?!

echo $balanc['BTC_RUB']['buy_price'];

print_r( $balanc["BTC_USD"] ); выдаст то что нужно, но как теперь выбрать все в цикле.

Array

(
[buy_price] => 9718.01
[sell_price] => 9758.1
[last_trade] => 9714.01
[high] => 9999.99999999
[low] => 8750
[avg] => 9401.3576503
[vol] => 1425.64609917
[vol_curr] => 13848740.46382813
[updated] => 1520674904
)
LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#5

Ну возьмите и переберите:

foreach ($balanc["BTC_USD"] as $n)

S
На сайте с 30.09.2016
Offline
469
#6
seosniks:
нужно в цикле забить таблицу.

А цикл зачем? Очень много валют? Или очень много параметров для них? То есть вообще-то там двойной цикл получается, если совсем от предопределённых строк/столбцов уходить.

Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
seosniks
На сайте с 13.08.2007
Offline
389
#7
LEOnidUKG:
Ну возьмите и переберите:

foreach ($balanc["BTC_USD"] as $n)

Перебрать без проблем я так пробовал, только у меня получается что $value будет содержать все значения.

А мне надо каждое значение подцепить на переменную.

Тут проще регуляркой вырвать все и распарсить, просто думал что выйдет через forearch

Сделал так, но тут вложенный цикл надо делать.

Проще распарсить регуляркой.

$value = json_decode($res, true); // преобразование строки в формате json в ассив

$monets= 'BTC_USD';

for ( $i=0; $i<1; $i++)

{

$buy_price= $value["$monets"]["buy_price"] ;//текущая максимальная цена покупки

$sell_price= $value["$monets"]["sell_price"] ;//текущая минимальная цена продажи

}

LEOnidUKG
На сайте с 25.11.2006
Offline
1723
#8

Это называется: "Не могу объяснить ТЗ, поэтому делают дичь"

---------- Добавлено 10.03.2018 в 13:17 ----------

for ( $i=0; $i<1; $i++)

{
$buy_price= $value["$monets"]["buy_price"] ;//текущая максимальная цена покупки
$sell_price= $value["$monets"]["sell_price"] ;//текущая минимальная цена продажи

}

Это что за бред?!

---------- Добавлено 10.03.2018 в 13:18 ----------

А мне надо каждое значение подцепить на переменную.

Все данные уже и так в переменных.

seosniks
На сайте с 13.08.2007
Offline
389
#9
Sitealert:
А цикл зачем? Очень много валют? Или очень много параметров для них? То есть вообще-то там двойной цикл получается, если совсем от предопределённых строк/столбцов уходить.

Может быть больше одной пары.

Да заморочился на свою голову, надо было обычным циклом все сделать..

S
На сайте с 30.09.2016
Offline
469
#10
seosniks:
Тут проще регуляркой вырвать все и распарсить

Зачем парсить, если json - это готовый объект? 😕

123 4

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий