18

以下に示すように、stdclassオブジェクトがあります。

stdClass Object
(     
    [text] => Parent
    [values] => Array
        (
            [0] => stdClass Object
                (
                    [id] => /m/0c02911
                    [text] => Laurence W. Lane Jr.
                    [url] => http://www.freebase.com/view/m/0c02911
                )

        )

)

私はそのようなオブジェクトを複数繰り返しますが、そのうちのいくつかは

stdClass Object
(
    [text] => Named after
    [values] => Array
        (
            [0] => stdClass Object
                (
                    [id] => /m/0c02911
                    [text] => Stanford
                    [url] => SomeURL
                )

        )

)

値として「Parent」を持つ「テキスト」の後にある場合、「values」オブジェクトにどのようにアクセスするのか疑問に思いました。

4

7 に答える 7

62

それを配列に変えるためのいくつかの方法があります:

最初の解決策:

$value = get_object_vars($object);

2番目の解決策:

$value = (array) $object;

3番目の解決策

$value = json_decode(json_encode($object), true);

変換された配列の値を取得するには

echo $value['values']['0']['id'];

オブジェクトを変換せずにオブジェクト変数にアクセスする別の方法は、試してみてください

$object->values->{'0'}->id
于 2013-02-26T16:41:02.643 に答える
2

Somwang Souksavatdの回答に応じて拡張(または最小化)し、次のようなオブジェクト値にアクセスするのが好きです。

echo get_object_vars($object)['values']['0']['id'];
于 2014-02-15T22:38:06.937 に答える
2

同じ問題が発生しましたが、理由はまだわかりませんが、この回避策を使用して機能させることができました。

$k2 ="1";
$elements = json_decode('{"id":"1","name":"User1"}');
//$elements['id'] == $k2;  //****Not Working
$tmp  = (object)$elements;
$tmp = $tmp ->id;          //****Working
//$tmp =$elements['id'] ;  //****Not Working
return $tmp == $k2;

配列として要素にアクセスすることもあれば、機能しないこともあると言わざるを得ません(PHP7では機能しましたが、PHP5.6では機能しませんでした)。

$elements配列にすることもできますが、json文字列を使用してデモンストレーションすることを選択しました。

これがどういうわけか役立つことを願っています!!!

于 2016-03-02T07:56:40.083 に答える
1


        $Obj=stdClass Object
    (
        [text] => Named after
        [values] => Array
            (
                [0] => stdClass Object
                    (
                        [id] => /m/0c02911
                        [text] => Stanford
                        [url] => SomeURL
                    )

            )

    )
    $Values= $result->values;
    $Item = $Values[0];
    $id=$Item->id;
    $text = $Item->text;
    $url=$Item->url;


于 2013-05-31T04:53:19.583 に答える
0

私は同じことをしていて、私がしたのはこれだけでした。

<?php
$stdObject = json_decode($stdClassObject);
print $stdObject->values[0]->id;
于 2013-11-01T13:33:46.770 に答える
0

これは、codeigniterフレームワークを使用してphpのサブアレイにアクセスするのに役立ちます

foreach ($cassule['tarefa'][0] as $tarefa => $novo_puto_ultimos_30_dias) {
                                            echo $novo_puto_ultimos_30_dias;
于 2021-09-02T08:16:42.313 に答える
-1

探しているのはObject['values'][0]です。'values'は'text'と同じようにキーマップであり、[0]はアクセスしたい配列内のインデックスです。したがって、IDをネストの奥深くに取得したい場合は、次のようなことを行う必要があります。

Object['values'][0]['id']

また

Object['values'][0]->id

/ m/0c02911が表示されます。しかし、ループをどのように実行しているかわからないため、ニーズに合わせて調整し、ループ内のそのコードに入れる必要のある場所に適切な変数を配置する必要があります。使用している言語が正確にはわかりません。

于 2011-05-03T22:49:39.897 に答える