设想:
$x = json_decode( $x );
foreach ( $x as $item )
{
$info[] = $item; //ERROR
}
我正在循环通过数据馈送来获取数据。我想在循环中将项目添加到 stdClass 对象。我该怎么做?我对stdobj不太熟悉。
如果您希望 json_decode 返回一个数组,您可以执行以下操作:
$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;
更多信息和示例可以在这里找到。
如果我理解正确,您应该能够遵循常规对象语法来获得您想要的结果。添加可选的第二个参数以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
......您已经拥有$x
stdClass 对象。
SPL
ArrayObject
让我们使用在示例中生成错误的相同语法。前提是您可以使用 anArrayObject
而不是stdClass
.