PHP从json返回数字名称

Posted

技术标签:

【中文标题】PHP从json返回数字名称【英文标题】:PHP return numeric name from 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。我在答案中添加了代码。 【参考方案1】:

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

$coin->"24h_volume_usd";

【讨论】:

【参考方案2】:

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

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

【讨论】:

以上是关于PHP从json返回数字名称的主要内容,如果未能解决你的问题,请参考以下文章

管理从 web api 以 json 格式返回的属性名称

将 Json 从 Php 返回到 Swift Alamofire

枚举值返回为数字 [重复]

从 PHP 脚本返回 JSON

如何将静态 JSON 从 PHP 返回到 extjs 存储

从 PHP 脚本返回 JSON 和 HTML