如何从PHP中的嵌套数组中提取JSON数据?
因此,我从Coinmarketcap.com中提取API,新版本的数据结构完全不同 另外,我是PHP和api的新手,不知道如何从api调用中提取嵌套数组数据 以下是api数据: 或 我决定将对象拉入如何从PHP中的嵌套数组中提取JSON数据?,php,api,import,Php,Api,Import,因此,我从Coinmarketcap.com中提取API,新版本的数据结构完全不同 另外,我是PHP和api的新手,不知道如何从api调用中提取嵌套数组数据 以下是api数据: 或 我决定将对象拉入json\u dcode,然后每次循环创建一个新数组,直到我能够获取我想要的数组数据,在本例中是$a()。这是可行的,但我认为可能有更有效的方法,因为我认为for循环会导致性能问题。有更好的方法吗?先谢谢你-丹 这是我的测试代码,请告诉我更好的方法: <?php $BitcoinConten
json\u dcode
,然后每次循环创建一个新数组,直到我能够获取我想要的数组数据,在本例中是$a()
。这是可行的,但我认为可能有更有效的方法,因为我认为for循环会导致性能问题。有更好的方法吗?先谢谢你-丹
这是我的测试代码,请告诉我更好的方法:
<?php
$BitcoinContents = file_get_contents("https://api.coinmarketcap.com/v2/ticker/1/?structure=array");
$BTCContents = json_decode($BitcoinContents, true);
echo " 0 <br>";
print_r($BTCContents);
echo "<br>";
foreach($BTCContents as $array){
echo "<br>--------<br>";
print_r($array);
foreach($array as $arr){
echo "<br>--------<br>";
print_r($arr);
foreach($arr as $ar){
echo "<br>--------<br>";
print_r($ar);
foreach($ar as $a){
echo "<br>--------<br>";
print_r($a);
foreach($a as $key => $val){
echo "<br>=========<br>";
echo "$key: $val | ";
}
}
}
}
}
echo "<br>=========<br>";
echo "<br>--------<br>";
print_r($a);
echo "<br>--------<br>";
echo "<br>=========<br>";
echo "<br>".$a['price']."<br>";
echo "<br>--------<br>";
echo "<br>=========<br>";
如果您试图访问嵌套数组中的特定数组,只需执行以下操作:
$data = $BTCContents['data'][0]['quotes']['USD'];
在这里,我使用数组的索引来访问一个特定的数组,即USD。
数组索引=数组的名称,可以是单词或数字
然后,您可以执行foreach循环来访问其中的项,也可以通过执行以下操作直接访问它们:
$price = $data['price'];
为什么不使用数组索引,比如$data['take']['from']['here']]
?嗯,我不知道怎么做。。。你能解释一下吗?(对PHP来说完全是新手)你的意思是“BTCContents['data']['quotes']['USD']['price']`而不是我的$a['price']
”?是的,就是这样。只需在不同的索引处打印r,看看你到达了哪里。只有当你想检索特定索引中的所有条目时,才需要循环。太好了,这完全奏效了。我在这里试过了,非常感谢。试图勾选您的答案,但我的声誉分数不到15。附带问题,为什么我们必须在这里添加[0]
?如果您打印($BTCContents),您将看到有不同的索引。这些索引用于访问特定数组。您可以在此处阅读不同类型的数组:[。当您进入$BTCContents['data']数组时,如果您打印($BTCContents['data']),则到达id、名称、引号和其他数据的新索引为0。有时索引为单词或数字。
$price = $data['price'];