シナリオ:
$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を連想配列としてデコードするようにjson_decode
設定します。これは、で使用しているフォームのように見えます。true
$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
と同じ構文を使用してみましょう。これは、のArrayObject
代わりにを使用できる場合に提供されますstdClass
。