【问题标题】:how to manage json data in php如何在php中管理json数据
【发布时间】:2014-06-12 18:39:29
【问题描述】:

我调用 JSON 数据并得到以下输出:

stdClass Object
(
[request] => stdClass Object
    (
        [Target] => Affiliate_Report
        [Format] => json
        [Service] => HasOffers
        [Version] => 3
        [Method] => getConversions
        [api_key] => my_key
        [NetworkId] => icubes
        [fields] => Array
            (
                [0] => Offer.name
                [1] => Browser.display_name
                [2] => Stat.payout
                [3] => Stat.sale_amount
                [4] => Stat.status
                [5] => Stat.datetime
                [6] => Stat.ip
                [7] => Stat.ad_id
                [8] => Stat.affiliate_info1
            )

    )

[response] => stdClass Object
    (
        [status] => 1
        [httpStatus] => 200
        [data] => stdClass Object
            (
                [page] => 1
                [current] => 100
                [count] => 75
                [pageCount] => 1
                [data] => Array
                    (
                        [0] => stdClass Object
                            (
                                [Offer] => stdClass Object
                                    (
                                        [name] => Myntra (CPS)
                                    )

                                [Browser] => stdClass Object
                                    (
                                        [display_name] => Chrome
                                    )

                                [Stat] => stdClass Object
                                    (
                                        [payout] => 150.00000
                                        [sale_amount] => 954.00000
                                        [status] => rejected
                                        [datetime] => 2014-03-31 19:49:50
                                        [ip] => 103.226.84.249
                                        [ad_id] => 102ecc5fe230883c195d8a0e84ef7f
                                        [affiliate_info1] => 
                                    )

                            )

                        [1] => stdClass Object
                            (
                                [Offer] => stdClass Object
                                    (
                                        [name] => Myntra (CPS)
                                    )

                                [Browser] => stdClass Object
                                    (
                                        [display_name] => Firefox
                                    )

                                [Stat] => stdClass Object
                                    (
                                        [payout] => 270.00000
                                        [sale_amount] => 545.00000
                                        [status] => approved
                                        [datetime] => 2014-04-18 12:00:20
                                        [ip] => 27.0.51.119
                                        [ad_id] => 10256740541d68b117955aa58529a6
                                        [affiliate_info1] => 
                                    )

                            )

我想使用表格标签以表格形式显示该数据,并且还想将该数据插入 MySQL 数据库。

但是我不明白数据的数组格式。

我的代码:

$result = file_get_contents($base);

$obj = json_decode($result);
echo"<table>";
foreach($obj as $item) {
echo"
<tr>
<td>$item['Offer.name']</td>
<td>$item['Browser.display_name']</td>
<td>$item['Stat.payout']</td>
<td>$item['Stat.sale_amount']</td>
<td>$item['Stat.datetime']</td>
<td>$item['Stat.ip']</td>
</tr>
"; 
}
echo"</table>";

这段代码给了我一个空白输出。


我使用了以下代码并得到了输出,但仍然存在一些错误。

$result = file_get_contents($base);

$obj = json_decode($result, true);
echo"<table border=1>";
$i = 0;
    foreach($obj['response'] as $item) {

    for($i=0;$i<=10;$i++)
    {
        echo"
        <tr>
        <td>{$item['data'][$i]['Offer']['name']}</td>
        <td>{$item['data'][$i]['Stat']['payout']}</td>
        <td>{$item['data'][$i]['Stat']['sale_amount']}</td>
        <td>{$item['data'][$i]['Stat']['status']}</td>
        <td>{$item['data'][$i]['Stat']['datetime']}</td>
        <td>{$item['data'][$i]['Stat']['ip']}</td>
        </tr>
        "; 
    }

    }
echo"</table>";

我的输出:

当没有空白数据时,为什么上面的行显示空白值?

那些错误是什么?

【问题讨论】:

  • 请把var_dump($obj)的结果贴出来;
  • @RobertRozas 他做到了……作为他自己问题的答案,而不是将其添加到问题本身。

标签: php mysql arrays json


【解决方案1】:

您使用了错误的语法。很难准确地看到您期望的结果,返回的对象的值看起来像是原始 json 本身的对象,并且没有任何有用的数据。但是,为您澄清:

您将 json_decode() 结果作为对象返回并尝试将其作为数组进行访问。 要返回关联数组,您需要将“assoc”参数添加到函数中,以读取:

json_decode($result, true)

并且您试图直接从关联数组中提取值,您需要通过键访问它,这将为您提供要读取的值:

$result = file_get_contents($base);

$obj = json_decode($result, true);
echo"<table>";
foreach($obj['request'] as $item) {
echo"
<tr>
<td>{$item['fields'][0]}</td>
<td>{$item['fields'][1]}</td>
<td>{$item['fields'][2]}</td>
<td>{$item['fields'][3]}</td>
<td>{$item['fields'][4]}</td>
<td>{$item['fields'][5]}</td>
</tr>
"; 
}
echo"</table>";

另外,我在字符串中添加了大括号来转义变量表达式。

【讨论】:

  • 我试过你的代码,但它给了我一个错误致命错误:不能使用字符串偏移作为数组($item['fields'][0])
【解决方案2】:

由于您在响应中获取对象,请先尝试json_decode($result-&gt;request),通常不要像往常一样使用[ ],就好像您的结果是数组一样

编辑:尝试像这样输出响应:

echo '<pre>';
print_r($your-variable-here);
echo '</pre>';

然后让我知道输出

【讨论】:

  • 无法得到它.. 我想以表格形式显示 json 生成的数据,但我无法理解数组的结构并得到未定义索引的错误:Offer.name
  • 我在问题中提到的输出是 print_r(json_decode($result)) 的输出
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-05-09
  • 2015-09-15
相关资源
最近更新 更多