我有以下JSON:
{"name":"Hello World","products":[{"name":"cup","type":"large"},{"name":"spoon","type":"small"}]}
我正在使用卷曲请求和Slim来获取:
$vars = json_decode($app->request->getBody(), true);
print_r($vars);
但它取消了name
和type
的引号,因此当我尝试对它们使用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'
为什么会这样?谢谢大家的帮助!
答案 0 :(得分:6)
我收到错误:非法字符串偏移'名称'为什么会这样?
因为您要迭代的第一个元素是$vars['name']
,其值为'Hello World'
,这是一个字符串。 'Hello World'['name']
只是不起作用。
看起来您只想迭代$vars['products']
。
答案 1 :(得分:3)
你正在循环外循环。看起来你只想循环产品。
foreach ($vars['products'] as $var) {
echo $var['name'];
}