質問

シナリオ:

$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 を使用する機能を提供します。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top