PHP标准类问题

PHP标准类问题,php,stdclass,Php,Stdclass,情景: $x = json_decode( $x ); foreach ( $x as $item ) { $info[] = $item; //ERROR } 我正在通过一个数据源循环获取数据。我想向循环中的stdClass对象添加项。我该怎么做?我对stdobj不太熟悉。如果我理解正确,您应该能够遵循常规对象语法来获得想要的结果。将可选的第二个参数添加到json_decode并设置为true,以将json解码为关联数组,因为这似乎就是您正在使用它的表单 $info = new s

情景:

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

我正在通过一个数据源循环获取数据。我想向循环中的stdClass对象添加项。我该怎么做?我对stdobj不太熟悉。

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

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

正如Ignas指出的,
json\u decode()
的结果已经作为stdClass对象返回,因此如果您只使用
$x=json\u decode($x)
,您根本不需要
$info
。。。您已经有了
$x
作为stdClass对象。

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

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

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

SPL
让我们使用与示例中生成错误相同的语法。如果您能够使用
ArrayObject
而不是
stdClass

我可以指出您正在将一个对象强制转换为一个对象吗?那似乎没什么用。接得好!修复了代码,使其返回数组而不是对象。