【问题标题】:PHP return numeric name from jsonPHP从json返回数字名称
【发布时间】:2018-06-30 11:59:46
【问题描述】:

我有代码:

$json = file_get_contents('https://api.coinmarketcap.com/v1/ticker/?limit=0');
$coins = json_decode($json, true);
foreach($coins as $coin) {
  echo $coin->24h_volume_usd;
}

脚本返回错误:

解析错误:语法错误,意外 '24' (T_LNUMBER),期待 标识符 (T_STRING) 或变量 (T_VARIABLE) 或 '{' 或 '$'...

是的,我知道我不能将名称 JSON 与数字一起使用,但我不能将 24h_volume_usd 更改为例如:h_volume_usd,因为这是从其他页面 (ink) 下载的值。

【问题讨论】:

  • 把对象改成数组?也许这会奏效?您可以使用 json_decode() 执行此操作,但您的代码中缺少该部分。
  • @KIKOSoftware 不工作,当我更改为:echo $coin['24h_volume_usd']; 我有错误:不能使用 stdClass 类型的对象作为数组
  • 您当然需要将对象更改为数组。比如像 Aniket Sahrawat 说的那样。
  • 它的版本是 PHP 7.2。我在答案中添加了代码。

标签: php json foreach


【解决方案1】:

当对象键以数字开头时,您需要将其包装为大括号中的字符串文字,如下所示:

$coin->{"24h_volume_usd"};

【讨论】:

    【解决方案2】:

    您可以通过将第二个参数设置为 true 来将 json-string 解码为关联数组。

    $coins = json_decode($jsonString, true);
    foreach($coins as $coin) {
      echo $coin['24h_volume_usd'];
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多