23

私は持っている:

stdClass Object
(
    [0] => stdClass Object
        (
            [one] => aaa
            [two] => sss
        )

    [1] => stdClass Object
        (
            [one] => ddd
            [two] => fff
        )

    [2] => stdClass Object
        (
            [one] => ggg
            [two] => hhh
        )
}

たとえば、キーを使用してこれを取得する必要があります。

$var = $stdClass[0]; 

しかし、私はエラーがあります:

致命的なエラー: タイプ stdClass のオブジェクトを配列として使用できません

この stdClass を配列に解析し、これをキーで使用することは可能ですか?

4

11 に答える 11

69

それを配列にキャストします。

$array = (array)$stdClass;
于 2012-07-09T13:31:32.167 に答える
36

json_decodeその JSON 文字列をオブジェクトに変換するために使用している場合は、2 番目のパラメーターjson_decode($string, true)を使用できます。これにより、オブジェクトが連想配列に変換されます。

そうでない場合は、他の人が言ったことを入力してキャストするだけです

$array = (array) $stdClass;

于 2012-07-09T13:34:44.623 に答える
8

あなたの問題はおそらく解決されていますが、参考までに、Googleおじさんの簡単な回答を参照してください。

function objectToArray($d) {
  if(is_object($d)) {
    $d = get_object_vars($d);
  }
  if(is_array($d)) {
    return array_map(__FUNCTION__, $d); // recursive
  } else {
    return $d;
  }
}

記事全文はこちら。私は元の作者とは一切関係がないことに注意してください。

于 2013-10-11T07:33:56.097 に答える
7

キャスト

$array = (array) $stdObject;
于 2012-07-09T13:31:49.493 に答える
4

もちろん、タイプキャストすることもできますが、クラス$var = (array) $obj;に提案します。ArrayAccess

を使用ArrayAccessすると、オブジェクトとデータを配列であるかのように、またはネイティブにオブジェクトとして扱うことができます。

于 2012-07-09T15:03:28.757 に答える
3

基本的に、型キャストするだけです:

$arr = (array)$obj;
$var = $arr[0];

ただし、ここで注意事項をお読みください。

于 2012-07-09T13:34:16.497 に答える
3

配列にキャストします。現在、配列として PHP で読み取ることはできません。

$array = (array)$stdClass;
于 2012-07-09T13:33:15.587 に答える
-3

stdClass はオブジェクトなので、次のように値にアクセスできます

echo stdClass->one;
于 2012-07-09T13:38:31.627 に答える