【问题标题】:Getting multidimensional array from json_decode从 json_decode 获取多维数组
【发布时间】:2015-03-11 14:32:51
【问题描述】:

如何从这个 JSON 响应中访问 $result['products']?

{"503380":{"response_code":"100","click_id":"10215bdfce7c","product_qty_30":"3","products[0][product_id]":"30","products[0][sku]":"ACMEROCKET","products[0][price]":"32.66"}}

$result = json_decode($result, 1);

然后当我这样做时

print_r($result['products]);

我才明白

Notice: Undefined index: products

但是当我这样做时

print_r($result);

我明白了

Array
(
    [503380] => Array
        (
            [response_code] => 100
            [click_id] => 10215bdfce7c
            [product_qty_30] => 3
            [products[0][product_id]] => 30
            [products[0][sku]] => ACMEROCKET
            [products[0][price]] => 32.66
        )

)

我注意到每个产品元素后面都有两个结束括号 (]),但是如何使它们可以通过

$result['products']

?

【问题讨论】:

  • 您的数据是作为字符串插入的,而不是对象/数组
  • 所以这在我的层面上不是问题,这是从我正在使用的 API 返回的 JSON 字符串的问题?似乎应该有一种方法可以将它们变成一个数组,特别是注意产品元素如何以两个括号而不是一个括号结尾
  • 我认为数据没有正确存储,是的,"products[0][sku]" vs "products":[{"sku":"ACMEROCKET", "price":32.66} ]
  • 转储 $result 的内容使用: echo '
    ';var_dump($result);echo '
    ';当你在它的时候把它放到一个函数中。您会很容易看到 JSON 数据未正确编码。

标签: php json multidimensional-array


【解决方案1】:

谢谢大家.. 原来只是 JSON 传递不正确。

【讨论】:

    【解决方案2】:

    这是不正确的 JSON,但如果你真的需要你可以试试这样的:

    $result = json_decode($json, true);
    foreach($result[503380] as $key=>$value) {
        @eval("$" . $key . " = \"" . $value . "\";");
    }
    var_dump($products);
    

    但这是非常不好的做法!因为在 json 中可能是在您的服务器上执行的恶意代码。

    【讨论】:

      猜你喜欢
      • 2017-04-28
      • 1970-01-01
      • 2011-07-09
      • 2013-02-02
      • 2019-05-20
      • 2015-05-20
      相关资源
      最近更新 更多