PHP-如何读取json文件头和其他对象并在mysql中插入

时间:2019-05-26 14:08:01

标签: php mysql json parsing insert

我正在尝试读取一个json文件,该文件具有页眉,正文和页脚部分,随后希望使用PHP代码插入mysql数据库中。

我试图读取json文件,但是该文件具有几个头对象和数据对象。数据对象有很多记录。我想分别读取标题和数据。我试图读取数据对象,但是即使打印语句也不起作用。请帮助分别解析标头和数据对象。

php代码

$json = file_get_contents('./f.json');

$json_data = json_decode($json,true);

print_r($json_data);


foreach ($json_data['data'] as $item => $value) {
    print $item['symbol'];
    print ' - ';
    print $item['ltp'];
    print ' - ';
    print '<br>';
}

json文件

{

    "noChg":0,
    "adv":10,
    "dec":3,
    "data":[
        {
            "symbol":"TECHM",
            "open":"749.90",
            "high":"749.90",
            "low":"732.05",
            "ltP":"737.00",
            "ptsC":"-6.30",
            "per":"-0.85"
        },
        {
            "symbol":"HAVELLS",
            "open":"752.85",
            "high":"754.90",
            "low":"739.10",
            "ltP":"745.00",
            "ptsC":"-6.50",
            "per":"-0.86"
        },
        {
            "symbol":"NESTLEIND",
            "open":"10,813.00",
            "high":"10,849.90",
            "low":"10,592.30",
            "ltP":"10,682.40",
            "ptsC":"-114.65",
            "per":"-1.06"
        },
        {
            "symbol":"HEXAWARE",
            "open":"356.30",
            "high":"357.45",
            "low":"349.45",
            "ltP":"352.00",
            "ptsC":"-4.15",
            "per":"-1.17"
        },
        {
            "symbol":"ADANIENT",
            "open":"162.35",
            "high":"163.75",
            "low":"151.85",
            "ltP":"159.15",
            "ptsC":"-1.90",
            "per":"-1.18"
        },
        {
            "symbol":"TORNTPHARM",
            "open":"1,554.80",
            "high":"1,566.90",
            "low":"1,511.20",
            "ltP":"1,530.00",
            "ptsC":"-22.20",
            "per":"-1.43"
        },
        {
            "symbol":"BATAINDIA",
            "open":"1,374.90",
            "high":"1,374.90",
            "low":"1,329.00",
            "ltP":"1,345.00",
            "ptsC":"-20.50",
            "per":"-1.50"
        },
        {
            "symbol":"KAJARIACER",
            "open":"616.05",
            "high":"619.00",
            "low":"595.20",
            "ltP":"603.00",
            "ptsC":"-12.80",
            "per":"-2.08"
        },
        {
            "symbol":"RELINFRA",
            "open":"116.40",
            "high":"116.90",
            "low":"111.05",
            "ltP":"111.85",
            "ptsC":"-2.60",
            "per":"-2.27"
        },
        {
            "symbol":"PVR",
            "open":"1,783.80",
            "high":"1,783.80",
            "low":"1,698.85",
            "ltP":"1,716.00",
            "ptsC":"-50.85",
            "per":"-2.88"
        },
        {
            "symbol":"SUNTV",
            "open":"553.00",
            "high":"561.30",
            "low":"512.00",
            "ltP":"531.70",
            "ptsC":"-16.15",
            "per":"-2.95"
        },
        {
            "symbol":"JETAIRWAYS",
            "open":"146.15",
            "high":"152.90",
            "low":"142.35",
            "ltP":"147.70",
            "ptsC":"-7.75",
            "per":"-4.99"
        },
        {
            "symbol":"JUSTDIAL",
            "open":"744.00",
            "high":"744.00",
            "low":"673.35",
            "ltP":"680.60",
            "ptsC":"-66.35",
            "per":"-8.88"
        }
    ],
    "totQty":"14,259.87",
    "totQtyMil":"1,425.99",
    "totValMil":"353.59",
    "time":"May 24, 2019 16:00:00",
    "totVal":"35,358.82" }

我希望从数据对象中解析和提取值,但是出现以下错误:

  

PHP致命错误:无法将stdClass类型的对象用作数组   /home/fut/public_html/on.php

2 个答案:

答案 0 :(得分:1)

我无法重现您得到的错误,但是您当前拥有的代码存在一些问题。

您正在尝试使用$item作为数组的内容而不是$value$tem是数组的索引而不是内容。

密钥也区分大小写-您必须使用'ltP'而不是'ltp' ...

foreach ($json_data['data'] as $item => $value) {
    print $value['symbol'];
    print ' - ';
    print $value['ltP'];
    print ' - ';
    print '<br>';
}

答案 1 :(得分:0)

如果要将JSON解码为数组,则需要传递second parameter True

<?php
$json = file_get_contents('./f.json');

$json_data = json_decode($json, true);

print_r($json_data);

//to see header
$header = array_keys($json_data['data'][0]);
var_export($header);

$header2 = [];
foreach($json_data as $key => $item) {
    if(!is_array($item)) {
        $header2[$key] = $item;
    }
}
//to see the other header
var_export($header2);

foreach ($json_data['data'] as $item => $value) {
print $item['symbol'];
print ' - ';
print $item['ltp'];
print ' - ';
print '<br>';

}