【问题标题】:extracting data from Object in PHP在 PHP 中从 Object 中提取数据
【发布时间】:2021-05-25 21:41:05
【问题描述】:

我有这段代码可以从返回以下原始数据的远程 API 获取数据

{"BTC":0.00002067,"USDT":1,"DOGE":21.53}

和/或跟随对象

stdClass Object ( [BTC] => 2.056E-5 [USDT] => 1 [DOGE] => 21.52 

我正在使用此代码

  $url = 'https://min-api.cryptocompare.com/data/price?fsym=USD&tsyms=BTC,USDT,DOGE';
  $data = file_get_contents($url);
  $priceInfo = json_decode($data);

  foreach ($priceInfo as $val){
  echo "<br>--> ".$val;
  } 

返回这个

--> 2.056E-5
--> 1
--> 21.52

但我会得到这个结果

--> BTC 0.00002067
--> USDT 1
--> DOGE 21.52

怎样才能达到这个结果?

【问题讨论】:

  • @RiggsFolly 的回答是正确的,但我建议使用json_decode($data, true),它将 JSON 解码为关联数组,而不是对象。 foreach 循环会更有意义,同时允许与 PHP 的任何数组函数一起使用。
  • @kfriend 没必要,因为一个对象也可以像数组一样使用 foreach 来循环其属性,因为这是一个仅属性对象,它相当学术
  • @RiggsFolly,从技术上讲,foreach 在此示例中有效,这是正确的,但这不是我的意思。我的观点是,将其转换为关联数组可能对 OP 更有用。显然,这可能会根据使用数据的最终上下文而改变。在野外,以这种方式使用对象并不典型,因此,关联数组是更好的方法。

标签: php arrays api object


【解决方案1】:

然后使用foreach的扩展形式

foreach ($priceInfo as $key => $val){
  echo "<br>--> $key " . sprintf('%0.8f', $val);
} 

【讨论】:

  • 谢谢,你知道为什么 PHP 会返回 BTC 2.06E-5 而不是 BTC 0.00002067 吗?
  • 应该排序
猜你喜欢
  • 2020-02-09
  • 2016-04-19
  • 1970-01-01
  • 1970-01-01
  • 2023-03-11
  • 2014-07-08
  • 2021-10-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多