场景:
$x = json_decode( $x );
foreach ( $x as $item )
{
$info[] = $item; //ERROR
}我循环通过一个datafeed来获取数据。我想在循环中向stdClass对象添加项。我该怎么做呢?我对stdobj不是很熟悉。
发布于 2009-10-25 14:50:08
如果您希望json_decode返回一个数组,您可以执行以下操作:
$x = json_decode( $x, true ); // returns associative array instead of object
$info = (object) $x;更多信息和例子可以在here上找到。
发布于 2009-10-25 14:44:12
如果我没理解错的话,你应该只需要遵循常规的对象语法就可以得到你想要的结果。将可选的第二个参数添加到设置为true的json_decode中,以便将您的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……您已经拥有了作为stdClass对象的$x。
发布于 2009-10-26 02:31:44
SPL的ArrayObject让你使用与在你的例子中产生错误的语法相同的语法,前提是你可以使用ArrayObject而不是stdClass。
https://stackoverflow.com/questions/1620167
复制相似问题