-1

我有一个返回 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 对象有关,但我无法让它工作。

有什么帮助吗?

4

3 回答 3

2

如果你想打印名字,你可以试试这个

echo $obj->result[0]->name; // which should dereference the appropriate object.

同样在循环中,试试这个,因为 $obj->result 是数组,而 $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;
  }
}
}
于 2013-11-04T06:48:14.637 回答
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 => $value 对 $item 执行 foreach;

于 2013-11-04T06:52:14.723 回答
2

$obj->result[0]是一个对象;这就是为什么echo不起作用。尝试这个:echo $obj->result[0]->name;

于 2013-11-04T06:41:19.630 回答