質問
シナリオ:
$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;
詳細と例はこちら。
他のヒント
私があなたを正しく理解していれば、通常のオブジェクト構文に従って、望む結果を得ることができます。オプションの2番目のパラメーターを json_decode
に追加して true
に設定すると、jsonが連想配列としてデコードされます。これは、使用しているフォームのようです。 。
$info = new stdClass();
$x = json_decode( $x, true );
foreach ( $x as $key => $val) {
$info->$key = $val;
}
イグナスが指摘したように、 json_decode()
の結果はすでにstdClassオブジェクトとして返されているため、 $ x = json_decode($ x)
を使用した場合、 $ info
はまったく必要ありません...既に $ x
をstdClassオブジェクトとして持っているはずです。
SPL
の ArrayObject
サンプルでエラーを生成するのと同じ構文を使用してみましょう。これは、 stdClass
の代わりに ArrayObject
を使用する機能を提供します。
所属していません StackOverflow