Json Response数组循环

问题描述 投票:0回答:2

我已经阅读了页面和页面,我对如何继续进行了迷失。我试图从json数组中提取价格,但我提供的数据似乎要求我先定价?

var_dump(json_decode($ resp,true)); $ Data = json_decode($ resp,true);

    foreach($Data as $jsonDataKey => $jsonDataValue){
        foreach($jsonDataValue as $jsonArrayKey => $jsonArrayValue){
            echo "<hr>Price :".$jsonArrayValue['Price'];
            echo " Date:".$jsonArrayValue['Date'];
        }
    }
array) {   ["status"]=> "SUCCESS"   ["Date"]=>   array(1) {
["2018-11-23"]=>
array() {
  ["115.5"]=>
  array() {
    [0]=>
    array(46) {
      ["Price"]=> float(115.5)
      ["Date"]=> int(1543028400000)
    }
  }
  ["116.0"]=>
  array() {
    [0]=>
    array() {
      ["Price"]=> float(116.0)
      ["Date"]=> int(1543028400000)
foreach($Data as $jsonDataKey => $jsonDataValue){
    foreach($jsonDataValue as $jsonArrayKey => $jsonArrayValue){
        echo "<hr>Price :".$jsonArrayValue['Price'];
        echo " Date:".$jsonArrayValue['Date'];
    }
}

实际json的部分片段:

{ “符号”: “GLD”, “状态”: “SUCCESS”, “间接”:NULL, “策略”: “SINGLE”, “间隔”:NULL, “isDelayed”:真 “ISINDEX”:假”的InterestRate “:2.64581,” underlyingPrice “:115.56,” 挥发性 “:29.0,” daysToExpiration “:0.0”,callExpDateMap “:{” 2018年11月23日:0 “:{” 115.5 “:[{” putCall “:” CALL“,”符号“:”GLD_112318C115.5“,”description“:”GLD Nov 23 2018 115.5 Call(Weekly)“,”exchangeName“:”OPR“,”bid“:0.17,”ask“:0.28,”最后的 “:0.22,” 标记 “:0.23,” bidSize “:132,” askSize “:20,” lastSize “:0”,highPrice “:0.38,” lowPrice “:0.13,” openPrice “:0.0,” closePrice” :0.53, “totalVolume”:351, “tradeDate”:NULL, “tradeTimeInLong”:1542995987379 “quoteTimeInLong”:1542995999544 “netChange”: - 0.31, “挥发性”: - 999.0, “增量”:1.0, “伽马” :0.0 “THETA”: - 0.008 “维加”:0.0 “RHO”:0.003, “openInterest”:2231, “TIMEVALUE”: - 0.05, “theoreticalOptionValue”: - 999.0, “theoreticalVolatility”:29.0,“optionDeliverablesList “:NULL,” strikePrice “:115.5,” EXPIRATIONDATE “:1543028400000” daysToExpiration “:0”,expirationType “:” S “ ”lastTradingDay“:1542949200000, ”乘法器“:100.0,” せttlementType“:”“,”deliverrableNote“:”“,”isIndexOption“:null,”percentChange“: - 58.63,”markChange“: - 0.31,”markPercentChange“: - 57.69,”inTheMoney“:true,”nonStandard“: false,“mini”:false}],“116.0”:[{“putCall”:“CALL”,“symbol”:“GLD_112318C116”,“description”:“GLD Nov 23 2018 116 Call(Weekly)”,“exchangeName “:” OPR “ ”中标“:0.0, ”问“:0.01, ”最后“ 0.01 ”标志“:0.01, ”bidSize“:0, ”askSize“:692, ”lastSize“:0,” highPrice “:0.11,” lowPrice “:0.01,” openPrice “:0.0”,closePrice “:0.26,” totalVolume “:2167,” tradeDate “:NULL,” tradeTimeInLong “:1542995959548” quoteTimeInLong “:1542995984685” netChange“: -0.25, “挥发性”:0.0, “增量”:0.0, “伽马”:0.0 “THETA”:0.0, “维加”:0.0 “RHO”:0.0 “openInterest”:2786, “TIMEVALUE”:0.01 “theoreticalOptionValue”:0.0 “theoreticalVolatility”:29.0, “optionDeliverablesList”:NULL, “strikePrice”:116.0, “EXPIRATIONDATE”:1543028400000 “daysToExpiration”:0 “expirationType”: “S”, “lastTradingDay”:1542949200000 ,“multiplier”:100.0,“settlementType”:“”,“deliverrableNote”:“”,“isIndexOption”:null,“percentChange”: - 96。 21, “markChange”: - 0.26, “markPercentChange”: - 98.1, “inTheMoney”:假 “非标准”:假, “迷你”:假}]}, “2018年11月30日:7”:{“115.5 “:[{”putCall“:”CALL“,”symbol“:”GLD_113018C115.5“,”description“:”GLD Nov 30 2018 115.5 Call(Weekly)“,”exchangeName“:”OPR“,”bid“: 0.77, “问”:0.79, “最后”:0.76, “标记”:0.78, “bidSize”:22, “askSize”:18, “lastSize”:0 “highPrice”:0.89, “lowPrice”:0.73, “openPrice”:0.0 “closePrice”:0.94, “totalVolume”:217, “tradeDate”:NULL, “tradeTimeInLong”:1542995943992 “quoteTimeInLong”:1542995999810 “netChange”: - 0.18, “挥发性”:9.003,”三角洲 “:0.582,” 伽马 “:0.253,” THETA “: - 0.042,” 织女 “:0.067,” RHO “:0.015,” openInterest “:755,” TIMEVALUE “:0.49,” theoreticalOptionValue “:0.78,” theoreticalVolatility “:29.0,” optionDeliverablesList “:NULL,” strikePrice “:115.5,” EXPIRATIONDATE “:1543633200000” daysToExpiration “:7,” expirationType “:” S “ ”lastTradingDay“:15435.54亿, ”乘法器“:100.0,” settlementType “:”“,”“deliverrableNote”:“”,“isIndexOption”:null,“percentChange”: - 19.17,“markChange”: - 0.16,“markPercentChange”: - 17。 05, “inTheMoney”:真 “非标准”:假, “迷你”:假}], “116.0”:[{ “putCall”: “呼叫”, “符号”: “GLD_113018C116”, “描述”:“GLD 2018年11月30日116 Call(Weekly)“,”exchangeName“:”OPR“,”bid“:0.52,”ask“:0.55,”last“:0.53,”mark“:0.54,”bidSize“:920,”askSize “:18,” lastSize “:0”,highPrice “:0.63,” lowPrice “:0.49,” openPrice “:0.0”,closePrice “:0.69,” totalVolume “:1278,” tradeDate “:NULL,” tradeTimeInLong“: 1542995969283, “quoteTimeInLong”:1542995999922, “netChange”: - 0.16, “波动性”:91.65, “增量”:0.454,​​ “伽马”:0.252, “THETA”: - 0.043, “织女”:0.068, “RHO”: 0.011 “openInterest”:2948, “TIMEVALUE”:0.53, “theoreticalOptionValue”:0.535, “theoreticalVolatility”:29.0, “optionDeliverablesList”:NULL, “strikePrice”:116.0, “EXPIRATIONDATE”:1543633200000 “daysToExpiration”:7, “expirationType”:“S”,“lastTradingDay”:1543554000000,“multiplier”:100.0,“settlementType”:“”,“deliverrableNote”:“”,“isIndexOption”:null,“percentChange”: - 23.15,“markChange” :-0.15, “markPercentChange”: - 22.43, “inTheMoney”:假的, “非标准”:假的, “迷你”:假}]},“2018 -12-07:14“:{”115.5“:[{”putCall“:”CALL“,”symbol“:”GLD_120718C115.5“,”description“:”GLD Dec 7 2018 115.5 Call(Weekly)“,” exchangeName “:” OPR “ ”中标“:1.07, ”问“:1.1, ”最后一次“:1.07, ”标志“:1.09, ”bidSize“:496, ”askSize“:22, ”lastSize“:0,” highPrice “:1.16,” lowPrice “:1.07,” openPrice “:0.0”,closePrice “:1.27,” totalVolume “:3”,tradeDate “:NULL,” tradeTimeInLong “:1542988161634” quoteTimeInLong “:1542995999922,” netChange” :-0.2, “挥发性”:9.532, “增量”:0.569, “伽马”:0.176 “THETA”: - 0.034 “维加”:0.092 “RHO”:0.027, “openInterest”:214, “TIMEVALUE” :0.8, “theoreticalOptionValue”:1.085, “theoreticalVolatility”:29.0, “optionDeliverablesList”:NULL, “strikePrice”:115.5, “EXPIRATIONDATE”:15442.38亿,“d

php arrays json
2个回答
0
投票

查看数据,以下代码应该可以工作。

$data = json_decode($jsonString, true);
$history = $data['callExpDateMap'];
foreach( $history as $date => $entry ) {
    foreach ( $entry as $key => $row ) {
        $strikePrice = $row['strikePrice'];
        echo "Date : " . $date . "\n";
        echo "Strike price : " . $strikePrice . "\n";
    }
}

1
投票

您提供的JSON中没有“价格”键。但是,我可以看到“符号”,“状态”,“波动性”等。如果价格与这些键处于同一水平,您将以这种方式访问​​:

foreach ($data as $value) {
    echo $value["Price"];
}

如果Price更深一些,您可以通过这种方式通过第一级密钥访问:

foreach ($data as $value) {
    echo $value["firstLevel"]["Price"];
}

等等。有几种方法可以看到JSON,尝试在这里粘贴https://jsonformatter.curiousconcept.com/,你应该能够轻松找到“价格”所在的位置,但我怀疑这是一个顶级关键。

© www.soinside.com 2019 - 2024. All rights reserved.