如何正确地从JSON中获取信息



我使用它从JSON:中的url检索数据

$apiUrl = "https://api.uphold.com/v0/ticker/UPXAU";
$upxau_rates = file_get_contents($apiUrl);
if($upxau_rates !== false){
$upxau_rates_res = json_decode($upxau_rates);
}
foreach($upxau_rates_res as $upxau_rates_item)
{
if($upxau_rates_item->pair == "UPXAU-USD")
{
$usd_rate = $upxau_rates_item->ask; 
}
}

来自api的JSON具有以下结构:

[{
"ask": "0.27226",
"bid": "0.27226",
"currency": "USD",
"pair": "AEDUSD"
},
{
"ask": "0.02675",
"bid": "0.02675",
"currency": "USD",
"pair": "ARSUSD"
},
{
"ask": "0.72624",
"bid": "0.72624",
"currency": "USD",
"pair": "AUDUSD"
},
...

所以,这很好用。但我想获得关于"要价"的信息,而不需要"foreach"one_answers"if"。例如:

$apiUrl = "https://api.uphold.com/v0/ticker/UPXAU";
$upxau_rates = file_get_contents($apiUrl);
if($upxau_rates !== false){
$upxau_rates_res = json_decode($main_currency);
}
echo $upxau_rates_res['pair']['UPXAU-USD']['ask'];

但这条捷径行不通。我怎么能在这么短的时间内获得信息?

解码为一个数组,然后在pair上进行索引以访问它。索引所有并访问ask:

$array = json_decode($json, true);
echo array_column($array, null, 'pair')['AEDUSD']['ask'];

或者只在pair:上索引ask

echo array_column($array, 'ask', 'pair')['AEDUSD'];

能够使用所有这些:

$array = array_column($array, null, 'pair');
echo $array['AEDUSD']['ask'];

最新更新