使用PHP循环访问数组键

时间:2018-01-09 23:17:05

标签: php arrays

我对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”。 有什么方法可以访问该信息吗?

5 个答案:

答案 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。

希望它有所帮助!