Json解码删掉字符串引号

时间:2014-02-05 04:51:55

标签: php json slim

我有以下JSON:

{"name":"Hello World","products":[{"name":"cup","type":"large"},{"name":"spoon","type":"small"}]}

我正在使用卷曲请求和Slim来获取:

$vars = json_decode($app->request->getBody(), true);
print_r($vars);

但它取消了nametype的引号,因此当我尝试对它们使用foreach循环时,它不认为它们是字符串。

Array
(
  [name] => Hello World
  [products] => Array
    (
        [0] => Array
            (
                [name] => cup
                [type] => large
            )

        [1] => Array
            (
                [name] => spoon
                [type] => small
            )

    )

)

当我使用这样的foreach时:

foreach ($vars as $var){
   print_r($var);
   echo $var[0]['name'];
}

我收到错误:Illegal string offset 'name' 为什么会这样?谢谢大家的帮助!

2 个答案:

答案 0 :(得分:6)

  

我收到错误:非法字符串偏移'名称'为什么会这样?

因为您要迭代的第一个元素是$vars['name'],其值为'Hello World',这是一个字符串。 'Hello World'['name']只是不起作用。

看起来您只想迭代$vars['products']

答案 1 :(得分:3)

你正在循环外循环。看起来你只想循环产品。

foreach ($vars['products'] as $var) {
   echo $var['name'];
}