duanrenchuo9244 2016-08-04 12:45
浏览 43
已采纳

PHP - 从json保存对象密钥

Sorry for the noobie question, I am trying to save some json data on to my database. The problem is, i don't know how to get any of the "parent_names". The "parent_name" is always the same as the child "name".

price-data.json

[
    {
        "Flag": {
            "name": "Flag",
            "safe_price": "118.31",
            "safe_net_price": "110.60",
            "total_volume": 3148,
            "7_days": {
                "median_price": "118.31",
                "lowest_price": "100.00",
                "highest_price": "132.25",
                "volume": 94
            }
        },
        "Pole": {
            "name": "Pole",
            "safe_price": "81.21",
            "safe_net_price": "70.62",
            "total_volume": 1,
            "7_days": {
                "volume": 0
            }
        },
        "Net": {
            "name": "Net",
            "safe_price": "0.89",
            "safe_net_price": "0.84",
            "total_volume": 763,
            "7_days": {
                "median_price": "0.89",
                "lowest_price": "0.65",
                "highest_price": "1.08",
                "volume": 30
            }
        }
    }
]

php

$filename = "price-data.json";  
$data = file_get_contents($filename);  
$array = json_decode($data, true);


foreach($array as $row)  
 {  
      $sql = "INSERT INTO table_all_prices(parent_name, name, safe_price, safe_net_price, total_volume, median_price, lowest_price, highest_price, volume) VALUES (
      '".$row["parent_name"]."', 
      '".$row["parent_name"]["name"]."', 
      '".$row["parent_name"]["safe_price"]."', 
      '".$row["parent_name"]["safe_net_price"]."', 
      '".$row["parent_name"]["total_volume"]."', 
      '".$row["parent_name"]["7_days"]["median_price"]."',
      '".$row["parent_name"]["7_days"]["lowest_price"]."',
      '".$row["parent_name"]["7_days"]["highest_price"]."',
      '".$row["parent_name"]["7_days"]["volume"]."'
      )";       
 }  
 echo "All Prices inserted to database";  

展开全部

  • 写回答

1条回答 默认 最新

  • douyoufan7881 2016-08-04 13:09
    关注

    You need to access the key from the current array level in the loop, you can do that by

     foreach($array as $parent_name => $row)
    

    Adding a variable in before the $row variable think of this like array access

     array( 'key' => 'value' )
    

    Same deal. Now because you are in the "parent_name" level of the array you don't need to put the additional access key in there. So for this

    $row["parent_name"]["7_days"]["volume"]
    

    You can just do

    $row["7_days"]["volume"]
    

    Because you will be working in this part of the json

            "name": "Net",
            "safe_price": "0.89",
            "safe_net_price": "0.84",
            "total_volume": 763,
            "7_days": {
                "median_price": "0.89",
                "lowest_price": "0.65",
                "highest_price": "1.08",
                "volume": 30
            }
    

    Then because you have an outer array wrapper on your json [{ .. }] those square brackets. you may need to do $array[0] or $array = reset($array). Reset is probably better ( if that turns out to be the case ) because you will avoid some warning messages from PHP if the array is empty. Essentially, trying to access a key of 0 will give you an undefined index warning if it's empty..

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
编辑
预览

报告相同问题?

手机看
程序员都在用的中文IT技术交流社区

程序员都在用的中文IT技术交流社区

专业的中文 IT 技术社区,与千万技术人共成长

专业的中文 IT 技术社区,与千万技术人共成长

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!

客服 返回
顶部