web-dev-qa-db-ja.com

特定のキーと値のペアの後にstdclassオブジェクトにアクセスする方法は?

以下に示すような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
                )

        )

)

「親」を値として持つ「テキスト」の後にある場合、「値」オブジェクトにどのようにアクセスするのでしょうか。

15
Rio

それを配列に変換するサーバー上の方法があります:

最初のソリューション:

$value = get_object_vars($object);

2番目のソリューション:

$value = (array) $object;

番目のソリューション

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

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

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

オブジェクトを変換せずにオブジェクトvarにアクセスする別の方法は、

$object->values->{'0'}->id
44

Somwang Souksavatdの回答に基づいて拡張(または最小化)する場合、次のようなObject値にアクセスするのが好きです。

echo get_object_vars($object)['values']['0']['id'];
2


        $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;

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

<?php
$stdObject = json_decode($stdClassObject);
print $stdObject->values[0]->id;
0
pythonian29033

私は同じ問題を抱えていましたが、理由はまだわかりませんが、この回避策を使用してそれを機能させることができました:

$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はArray toにすることができますが、json文字列を使用してデモンストレーションすることを選択しました。

これが何らかの形で役立つことを願っています!!!

0
Pini Cheyni