2

シナリオ:

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

データを取得するためにデータフィードをループしています。ループ内のstdClassオブジェクトにアイテムを追加したいと思います。どうすればいいですか?私はstdobjにあまり詳しくありません。

4

3 に答える 3

5

json_decodeが配列を返すことを期待する場合は、次のようにすることができます。

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

詳細と例はここにあります。

于 2009-10-25T06:50:08.077 に答える
4

私があなたを正しく理解していれば、あなたは通常のオブジェクト構文に従って、あなたが望む結果を得ることができるはずです。オプションの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...すでに$xstdClassオブジェクトとして持っているはずです。

于 2009-10-25T06:44:11.693 に答える
1

SPL例でエラーを生成するのArrayObjectと同じ構文を使用してみましょう。これは、のArrayObject代わりにを使用できる場合に提供されますstdClass

于 2009-10-25T18:31:43.643 に答える