2

设想:

$x = json_decode( $x );
foreach ( $x as $item )
{
    $info[] = $item;  //ERROR
}

我正在循环通过数据馈送来获取数据。我想在循环中将项目添加到 stdClass 对象。我该怎么做?我对stdobj不太熟悉。

4

3 回答 3

5

如果您希望 json_decode 返回一个数组,您可以执行以下操作:

$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;

更多信息和示例可以在这里找到。

于 2009-10-25T06:50:08.077 回答
4

如果我理解正确,您应该能够遵循常规对象语法来获得您想要的结果。添加可选的第二个参数以json_decode设置为true将您的 json 解码为关联数组,因为这似乎是您使用它的形式。

$info = new stdClass();
$x = json_decode( $x, true );
foreach ( $x as $key => $val) { 
    $info->$key = $val;
}

正如 Ignas 指出的那样,结果json_decode()已经作为 stdClass 对象返回,因此,如果您只是使用$x = json_decode($x),则根本不需要$info......您已经拥有$xstdClass 对象。

于 2009-10-25T06:44:11.693 回答
1

SPLArrayObject让我们使用在示例中生成错误的相同语法。前提是您可以使用 anArrayObject而不是stdClass.

于 2009-10-25T18:31:43.643 回答