以下に示すような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
)
)
)
「親」を値として持つ「テキスト」の後にある場合、「値」オブジェクトにどのようにアクセスするのでしょうか。
それを配列に変換するサーバー上の方法があります:
最初のソリューション:
$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
Somwang Souksavatdの回答に基づいて拡張(または最小化)する場合、次のようなObject値にアクセスするのが好きです。
echo get_object_vars($object)['values']['0']['id'];
$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;
私は同じ問題を抱えていましたが、理由はまだわかりませんが、この回避策を使用してそれを機能させることができました:
$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文字列を使用してデモンストレーションすることを選択しました。
これが何らかの形で役立つことを願っています!!!