我有一个返回JSON对象的php函数。
运行此代码:
$obj = json_decode($result); print_r($obj);
其中$result
是函数的输出。 $result
是:
{"result":[{"name":"name1","title":"title1","type":"1","place":"place1"},
{"name":"name2","title":"title2","type":"1","place":"place2"}]}
我的输出是:
stdClass Object ( [result] => Array ( [0] => stdClass Object ( [name] => name1 [title] => title1 [type] => 1 [place] => place1 )
[1] => stdClass Object ( [name] => name2 [title] => title2 [type] => 1 [place] => place2 ) ))
所以我想要的是访问每个项目的name1,title1等值。
我试过了:
echo $obj->result[0];
获取第一行,但它没有给我任何东西。
如果我尝试这样的话:
foreach ($obj as $key => $value) {
var_dump ($value);
foreach ($value as $feature => $item) {
echo $feature.' =>' .$item;
}
}
它只进入第一个循环一次(输出是一个数组(2)和项目),它根本不进入第二个for循环。我知道它与数组和JSON对象有关但我无法使它工作。
任何帮助?
答案 0 :(得分:2)
$obj->result[0]
是一个对象;这就是echo
无效的原因。试试这个:echo $obj->result[0]->name;
答案 1 :(得分:2)
如果要打印名称,可以试试这个
echo $obj->result[0]->name; // which should dereference the appropriate object.
同样在循环中,尝试使用$ obj->结果是数组,$ obj是单个对象
if($obj && isset($obj->result) && is_array($obj->result)){
foreach ($obj->result as $key => $value) {
var_dump ($value);
foreach ($value as $feature => $item) {
echo $feature.' =>' .$item;
}
}
}
答案 2 :(得分:2)
请改为尝试:
$json = json_decode($json);
foreach($json->result as $index => $item) {
// $item is an object now, you can access $item->name, $item->title, etc.
}
如果你想在其中循环每个键,你可以使用$ key =>对$ item进行foreach操作。 $值;