douyi1341 2017-06-08 00:06
浏览 292
已采纳

PHP - 从JSON中提取数据

I have a JSON file where I'm struggling getting the data out. Here is the JSON.

{"data":[
        {"tag":"operatingrevenue","value":215639000000.0},
        {"tag":"totalrevenue","value":215639000000.0},
        {"tag":"operatingcostofrevenue","value":131376000000.0},
        {"tag":"totalcostofrevenue","value":131376000000.0},
        {"tag":"totalgrossprofit","value":84263000000.0},
        {"tag":"sgaexpense","value":14194000000.0},
        {"tag":"rdexpense","value":10045000000.0},
        {"tag":"totaloperatingexpenses","value":24239000000.0},
        {"tag":"totaloperatingincome","value":60024000000.0},
        {"tag":"otherincome","value":1348000000.0},
        {"tag":"totalotherincome","value":1348000000.0},
        {"tag":"totalpretaxincome","value":61372000000.0},
        {"tag":"incometaxexpense","value":15685000000.0},
        {"tag":"netincomecontinuing","value":45687000000.0},
        {"tag":"netincome","value":45687000000.0},
        {"tag":"netincometocommon","value":45687000000.0},
        {"tag":"weightedavebasicsharesos","value":5470820000.0},
        {"tag":"basiceps","value":8.35},
        {"tag":"weightedavedilutedsharesos","value":5500281000.0},
        {"tag":"dilutedeps","value":8.31},
        {"tag":"weightedavebasicdilutedsharesos","value":5471500000.0},
        {"tag":"basicdilutedeps","value":8.35},
        {"tag":"cashdividendspershare","value":2.18}]

I'm converting it to an array using

$data = json_decode($jsondata, true);

I can then pull the data by:

$operatingRevenue = $data['data'][0]['value'];
$totalrevenue = $data['data'][1]['value'];

etc, however, I want to use the tag name and not just the order just in case the order changes in the JSON. Something like

$operatingRevenue = $data['data']['operatingRevenue'];
  • 写回答

2条回答 默认 最新

  • dqq46733 2017-06-08 00:11
    关注

    Iterate the $data array, and set the key of a new element in the array to the tag element, and it's value to the value element.

    foreach($data['data'] as $v)
        $array[$v['tag']] = $v['value'];
    

    $array contains what you want, access like this: $array['operatingRevenue']

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(1条)

报告相同问题?

悬赏问题

  • ¥15 关于#cesium#的问题:cesium 根据经纬度、高度、方位角、俯仰角和距离求另一点高度
  • ¥15 word脚注设置不起空格符号
  • ¥15 为什么apriori的运行时间会比fp growth的运行时间短呢
  • ¥15 求解密json或者美化
  • ¥15 帮我解决一下膳食平衡的线性规划模型的数据实例
  • ¥40 万年历缺少农历,需要和阳历同时显示
  • ¥250 雷电模拟器内存穿透、寻基址和特征码的教学
  • ¥200 比特币ord程序wallet_constructor.rs文件支持一次性铸造1000个代币,并将它们分配到40个UTXO上(每个UTXO上分配25个代币),并设置找零地址
  • ¥15 关于Java的学习问题
  • ¥15 如何使用chatgpt完成文本分类任务?