4

私は expedia API を使用しており、うまく機能していますが、この特殊なタイプの配列キーにアクセスする方法がわかりません。レスポンスは以下

$response = 
stdClass Object
(
    [@size] => 1
    [@activePropertyCount] => 144
    [city] => 1
    [@hotelId] => 12345
    [HotelSummary] => stdClass Object
        (
            [@order] => 0
            [@ubsScore] => 1074874
            [hotelId] => 151689
            [RoomRateDetailsList] => stdClass Object
                (
                    [RoomRateDetails] => stdClass Object
                        (
                            [roomTypeCode] => 195577
                            [rateCode] => 202369379
                            [maxRoomOccupancy] => 3
                            [quotedRoomOccupancy] => 2
                            [minGuestAge] => 0
                            [roomDescription] => Deluxe Room
                            [propertyAvailable] => 1
                            [propertyRestricted] => 
                            [expediaPropertyId] => 526332
                        )
                )
        )
)

「city」キーの下にある @hotelId の値にアクセスしたいのですが、アクセスできません

両方のタイプで試しましたが、両方とも失敗しました

$response->hotelId
and 
$response->@hotelId

助けてください..よろしくお願いします

4

1 に答える 1

5

これはあなたのために働くはずです:

(これは、正当な変数名を持たないプロパティにアクセスできないためです。そのため、カーリー構文を使用する必要があります)

echo $response->{"@hotelId"};

詳細については、マニュアルを参照してください: http://php.net/manual/en/language.variables.variable.php

そしてそこからの引用:

プロパティ名を明確に区切るために、中括弧を使用することもできます。これらは、配列を含むプロパティ内の値にアクセスする場合、プロパティ名が複数の部分で構成されている場合、またはプロパティ名に有効でない文字が含まれている場合(例: json_decode() または SimpleXML から) に最も役立ちます。

于 2015-03-26T13:28:27.207 に答える