Многомерный масив по значению ключа

89
19 марта 2021, 19:40

Как можно записать цену в переменную по значению ключа, например BTC, ETH, LTC см. скрин: https://dl.dropbox.com/s/auep7k8qppbia5b/shot_190705_190356.png

Есть вот такой код, и работает он на самом деле хорошо, единственный минус тут -- привязка к позиции [18] т.е. сегодня на 18 месте может быть Dogecoin, а завтра Сatcoin и нужно будет переписывать...

<?php
$tick = file_get_contents('https://api.coinmarketcap.com/v1/ticker/?limit=19');
$data = json_decode($tick, TRUE);
$bit = $data[0]["price_usd"];
echo "<b>Bitcoin:</b> ".$bit."<br>";
$dogecoin = $data[18]["price_usd"];
echo "<b>Dogecoin:</b> ".$dogecoin."<br>";
?>

Можно конечно все перебрать foreach и вывести, но нужно именно запихнуть в переменные, что бы потом обращатся к ним.

Прошу помощи у более опытных товарищей :)

Answer 1

Создаем ассоциативный массив, комбинируя массив ключей, которые берутся из значений ключей symbol исходного массива и массив исходных значений. Далее импортируем переменные из полученного массива - в текущее пространство:

<?php
$tick = file_get_contents('https://api.coinmarketcap.com/v1/ticker/?limit=19');
$data = json_decode($tick, true);
extract(
    array_combine(
        array_map(
            function ($itm) {
                return $itm['symbol'];
            },
            $data
        ),
        $data
    )
);
echo "<b>Bitcoin:</b> " . $BTC["price_usd"] . "<br>";
Answer 2

используйте array_column() со всеми аргументами, если кроме price_usd вам ничего не требуется

$data = array_column($tick, 'price_usd', 'symbol');
echo $data['BTC'];
READ ALSO
Получить результат выполнения JavaScript кода в php

Получить результат выполнения JavaScript кода в php

Есть php скрипт который работает в фоне ( nohup php scriptphp & )

74
Java. Spring. TomCat

Java. Spring. TomCat

Пишу Spring-Web-MVC приложение

119
Удаление View полученных через LayoutInflater

Удаление View полученных через LayoutInflater

В моем приложении есть 2 активити, в каждом из которых я создаю список из View полученных через LayoutInflaterПри создании каждого view-пункта списка...

106