【问题标题】:PHP get json data with json_decodePHP 使用 json_decode 获取 json 数据
【发布时间】:2014-09-29 00:58:12
【问题描述】:

我是 PHP 新手,尝试从 json 中回显一些数据,但我陷入了困境。

它显示非数据,但数据在那里。 var_dump() 向我展示了它。

可能我没有正确使用数组,但我找不到问题所在。我有这个代码,

我请求一些我用knockout.js收集的数据

Knockout 给了我一个 json(如下所示)

$json = $_REQUEST[seats];

echo 'requested data raw '. "<br>".$json;
$data = json_decode($json, true);

echo "<br>".'var_dump '. "<br>";
var_dump($data);

foreach ($data  as $optie ) {
    echo "name = " . $optie->name . "<br>";
    echo "optie  = " . $optie->optieName . "<br>";
    echo "prijs    = " . $optie->prijs . "<br>";
}

这是我的 JSON:

[
    {
        "name": "Naam 1",
        "optie": {
            "optieName": "Make_up",
            "prijs": 9.95
        },
        "PrijsFormated": "Euro: 9.95"
    },
    {
        "name": "Naam 2",
        "optie": {
            "optieName": "Handverzorging",
            "prijs": 12.95
        },
        "PrijsFormated": "Euro: 12.95"
    }
]

【问题讨论】:

  • 你已经在你的json_decode() 上使用了true 标志,该值现在是一个数组,所以像一个数组一样访问它,你有一个错字(我猜)$_REQUEST[seat](缺少引用)
  • 关于我的第一条评论的更正:您的 $data 是一个数组,而不是一个对象,因此,访问值是 $optie['name'] 等等,而不是 $optie-&gt;name。此外,正如我之前所说,我不明白它是如何工作的,因为 $_REQUEST[seats] 应该是 $_REQUEST['seats'];
  • 您将其解码为 arrayjson_decode() 中的第二个参数,您将其设置为 true),因此您必须像访问数组一样访问它:$optio['name']..etc

标签: php json knockout.js


【解决方案1】:

你应该使用这样的循环:

foreach ($data  as $optie ) {
    echo "name = " . $optie['name'] . "<br>";
    echo "optie  = " . $optie['optie']['optieName'] . "<br>";
    echo "prijs    = " . $optie['optie']['prijs']. "<br>";
}

因为使用json_decode() 和第二个参数为true,您已经创建了关联数组 - documentation

如果您想将数据作为对象访问,您应该使用:

$data = json_decode($json);

而不是

$data = json_decode($json, true);

然后你应该使用以下循环:

foreach ($data  as $optie ) {
    echo "name = " . $optie->name . "<br>";
    echo "optie  = " . $optie->optie->optieName . "<br>";
    echo "prijs    = " . $optie->optie->prijs. "<br>";
}

【讨论】:

  • 这是你应该做的OP。
  • 好的,谢谢,这正是我所需要的,现在可以使用了 :)
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2022-01-09
  • 2012-09-20
  • 1970-01-01
  • 2012-05-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多