我有一个JSON,我希望以PHP中的其中一个对象(BTCUSD)的“排名”为目标,但是对象排列基于排名是动态的。
以下是JSON输出:
{
"tickers":[
{
"pair":"BTCUSD",
"timestamp":153900343434,
"rank":"1",
"bid":"1234.00",
"ask":"1234.00"
},
{
"pair":"BTCGBP",
"timestamp":153900343434,
"rank":"2",
"bid":"54321.00",
"ask":"54321.00"
},
{
"pair":"BTCEUR",
"timestamp":153900343434,
"rank":"3",
"bid":"54321.00",
"ask":"54321.00"
}
]
}
我目前如何获得所需的结果:
$arr['RESULT'] = getJson('https://example.com/json')['tickers']['0']['rank'];
echo json_encode($arr)
上面的代码可以工作,但是效率不高,因为当一对排名改变时,它会向上移动,而我的代码将仅针对第一个内联而不是BTCUSD对。
任何帮助将不胜感激。
答案 0 :(得分:2)
然后应搜索数组。您可以使用array_filter。
// Grabbing the json->tickers array
$arr = getJson('https://example.com/json')['tickers'];
// Search the array
$arr = current(array_filter($arr, function($item){
return $item['pair'] == 'BTCUSD';
}));
echo json_encode($arr['rank']);