我对PHP很好,但是我的大脑在使用数组时很慢。
这是一个API,将已编码的JSON返回到数组中。
http://data.gate.io/api2/1/tickers
我们称之为$ myarray
$index=1;
foreach($myarray as $key => $value)
{
echo $index." ".$value['last']."<BR>";
$index++;
}
一切正常,我可以访问子阵列内的所有字段;但我无法访问子阵列的“名称”(例如“btc_usdt”)。 如果我使用$ value [0],我得到一个null。 如果我单独使用$ value,我得到字符串“array”。 有什么方法可以访问该信息吗?
答案 0 :(得分:1)
由于您的代码正在运行,我假设您使用json_decode(..., true);
对其进行了转换。然后答案很简单。当前子数组的名称存储在$key
变量中。
答案 1 :(得分:1)
&#34;名称&#34;存储在$ key中。这是一个有效的例子......
<?php
$myarray = json_decode(file_get_contents('http://data.gate.io/api2/1/tickers'), true);
$index = 1;
foreach ($myarray as $key => $value) {
echo $index . " " . $key . " " . $value['last'] . "<BR>";
$index++;
}
?>
答案 2 :(得分:0)
因为每个子数组都是stdClass objects
,所以你可以这样做
$index=1;
foreach($myarray as $key => $value) {
echo $index . " ". $value->last . "<BR>";
$index++;
}
答案 3 :(得分:0)
这是经过测试并适用于您提供的链接。我认为你没有正确格式化JSON数据。
$data = file_get_contents( 'http://data.gate.io/api2/1/tickers' );
$formattedData = json_decode( $data, true );
$index = 1;
foreach($formattedData as $key => $value)
{
echo $index . " name: {$key}, last: " . $value['last'] . "<BR>";
$index++;
}
数组的名称是值的关键。
答案 4 :(得分:0)
如果您仍然对上述工作示例感到困惑,那么我在这里有另一个解决方案:
$myarray = json_decode(file_get_contents('http://data.gate.io/api2/1/tickers'), true);
$index = 0;
$newarray = [];
foreach ($myarray as $key => $value) {
$newarray[$index] = $value;
$newarray[$index]['name'] = $key;
$index++;
}
echo '<pre>';print_r($newarray);exit;
现在name属性转移到子数组,您可以轻松迭代新生成的数组,即$ newarray。
希望它有所帮助!