API をクエリして simplexml オブジェクトを取得する codeigniter アプリがあります。simplexml オブジェクトから必要な値をハードコーディングしましたが、後でオブジェクトの構造が常に同じであるとは限らないことがわかったので、キャストを使用して必要な値を取得することはできません。
「classid」を使用して値を取得できるように、これに使用できる array_search のような関数はありますか? simplexml オブジェクトのサンプルを次に示します。
[Package] => SimpleXMLElement Object
(
[@attributes] => Array
(
[ID] => e981b9a72cd305c7d97cc530ef9b3015
)
[Postage] => Array
(
[0] => SimpleXMLElement Object
(
[@attributes] => Array
(
[CLASSID] => 3
)
[MailService] => Express Mail<sup>®</sup>
[Rate] => 57.60
)
[1] => SimpleXMLElement Object
(
[@attributes] => Array
(
[CLASSID] => 2
)
[MailService] => Express Mail<sup>®</sup> Hold For Pickup
[Rate] => 57.60
)
[2] => SimpleXMLElement Object
(
[@attributes] => Array
(
[CLASSID] => 55
)
[MailService] => Express Mail<sup>®</sup> Flat Rate Boxes
[Rate] => 39.95
)
[Rate] 値を取得するためにこれを使用していました。
$usps->Package->Postage[0]->Rate
問題は、[CLASSID] を使用する必要があることです。これは、数値キー (?) のデータが変更される場所が一貫しているためです。