如何从expedia的V3 PHP酒店列表请求中获取特定数据?

时间:2013-09-24 10:30:10

标签: php html curl

这似乎非常愚蠢,但是对于最后2个housr我试图从expedia的EAN api的响应中提取特定数据PHP代码是

$response = json_decode(curl_exec($ch));
print_r($response);

并且答案是

http://api.ean.com/ean-services/rs/hotel/v3/list?minorRev=99&apiKey=baabqgw8s9xsvn2e2at2yxzb&cid=443449&locale=en_US&city=Dallas&stateProvinceCode=TX&countryCode=US&numberOfResults=3&searchRadius=50&supplierCacheTolerance=MED_ENHANCED&arrivalDate=09/04/2014&departureDate=09/05/2014&room1=2

stdClass对象 (     [HotelListResponse] => stdClass对象         (             [customerSessionId] => 0ABAAA76-DF68-EE91-4142-F5BA98F936A7             [numberOfRoomsRequested] => 1             [moreResultsAvailable] => 1             [cacheKey] => -20df68ee:1414f5ba98f:37f4             [cacheLocation] => 10.186.170.118:7300             [cachedSupplierResponse] => stdClass对象                 (                     [@supplierCacheTolerance] => MED_ENHANCED                     [@cachedTime] => 0                     [@supplierRequestNum] => 465                     [@supplierResponseNum] => 3                     [@supplierResponseTime] => 1420                     [@candidatePreptime] => 7                     [@otherOverheadTime] => 22                     [@tpidUsed] => 5001                     [@matchedCurrency] =>真正                     [@matchedLocale] =>真正                 )

        [HotelList] => stdClass Object
            (
                [@size] => 3
                [@activePropertyCount] => 499
                [HotelSummary] => Array
                    (
                        [0] => stdClass Object
                            (
                                [@order] => 0
                                [@ubsScore] => 2735759
                                [hotelId] => 115100
                                [name] => Hilton Anatole
                                [address1] => 2201 N Stemmons Freeway
                                [city] => Dallas
                                [stateProvinceCode] => TX
                                [postalCode] => 75207
                                [countryCode] => US
                                [airportCode] => DFW
                                [supplierType] => E
                                [propertyCategory] => 1
                                [hotelRating] => 4
                                [confidenceRating] => 52
                                [amenityMask] => 7831690
                                [tripAdvisorRating] => 4
                                [tripAdvisorReviewCount] => 873
                                [tripAdvisorRatingUrl] => http://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/4.0-12345-4.gif
                                [locationDescription] => In Dallas (Market Center)
                                [shortDescription] => <p><b>Property Location</b> <br />You'll be centrally located in Dallas with a stay at Hilton Anatole, steps from Dallas Market Center and close to American Airlines Center. This 4-star hotel is
                                [highRate] => 139
                                [lowRate] => 139
                                [rateCurrencyCode] => USD
                                [latitude] => 32.80057
                                [longitude] => -96.82661
                                [proximityDistance] => 4.350429
                                [proximityUnit] => MI
                                [hotelInDestination] => 1
                                [thumbNailUrl] => /hotels/1000000/30000/23000/22945/22945_63_t.jpg
                                [deepLink] => http://travel.ian.com/index.jsp?pageName=hotAvail&cid=55505&hotelID=115100&mode=2&numberOfRooms=1&room-0-adult-total=2&room-0-child-total=0&arrivalMonth=8&arrivalDay=4&departureMonth=8&departureDay=5&showInfo=true&locale=en_US
                                [RoomRateDetailsList] => stdClass Object
                                    (
                                        [RoomRateDetails] => stdClass Object
                                            (
                                                [roomTypeCode] => 2311
                                                [rateCode] => 2311
                                                [maxRoomOccupancy] => 4
                                                [quotedRoomOccupancy] => 2
                                                [minGuestAge] => 0
                                                [roomDescription] => 2 Double Beds Standard
                                                [propertyAvailable] => 1
                                                [propertyRestricted] => 
                                                [expediaPropertyId] => 22945
                                                [RateInfos] => stdClass Object
                                                    (
                                                        [@size] => 1
                                                        [RateInfo] => stdClass Object
                                                            (
                                                                [@priceBreakdown] => true
                                                                [@promo] => false
                                                                [@rateChange] => false
                                                                [RoomGroup] => stdClass Object
                                                                    (
                                                                        [Room] => stdClass Object
                                                                            (
                                                                                [numberOfAdults] => 2
                                                                                [numberOfChildren] => 0
                                                                            )

                                                                    )

                                                                [ChargeableRateInfo] => stdClass Object
                                                                    (
                                                                        [@averageBaseRate] => 139.0
                                                                        [@averageRate] => 139.0
                                                                        [@commissionableUsdTotal] => 139.0
                                                                        [@currencyCode] => USD
                                                                        [@maxNightlyRate] => 139.0
                                                                        [@nightlyRateTotal] => 139.0
                                                                        [@surchargeTotal] => 26.0
                                                                        [@total] => 165.0
                                                                        [NightlyRatesPerRoom] => stdClass Object
                                                                            (
                                                                                [@size] => 1
                                                                                [NightlyRate] => stdClass Object
                                                                                    (
                                                                                        [@baseRate] => 139.0
                                                                                        [@rate] => 139.0
                                                                                        [@promo] => false
                                                                                    )

                                                                            )

                                                                        [Surcharges] => stdClass Object
                                                                            (
                                                                                [@size] => 1
                                                                                [Surcharge] => stdClass Object
                                                                                    (
                                                                                        [@type] => TaxAndServiceFee
                                                                                        [@amount] => 26.0
                                                                                    )

                                                                            )

                                                                    )

                                                                [nonRefundable] => 
                                                                [HotelFees] => stdClass Object
                                                                    (
                                                                        [@size] => 1
                                                                        [HotelFee] => stdClass Object
                                                                            (
                                                                                [@description] => MandatoryTax
                                                                                [@amount] => 21.45
                                                                            )

                                                                    )

                                                                [rateType] => MerchantStandard
                                                                [currentAllotment] => 0
                                                            )

                                                    )

                                            )

                                    )

                            )

                        [1] => stdClass Object
                            (
                                [@order] => 1
                                [@ubsScore] => 1751598
                                [hotelId] => 106103
                                [name] => Hyatt Regency Dallas
                                [address1] => 300 Reunion Blvd
                                [city] => Dallas
                                [stateProvinceCode] => TX
                                [postalCode] => 75207
                                [countryCode] => US
                                [airportCode] => DFW
                                [supplierType] => E
                                [propertyCategory] => 1
                                [hotelRating] => 4
                                [confidenceRating] => 68
                                [amenityMask] => 7831688
                                [tripAdvisorRating] => 4
                                [tripAdvisorReviewCount] => 698
                                [tripAdvisorRatingUrl] => http://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/4.0-12345-4.gif
                                [locationDescription] => Near Dallas Convention Center
                                [shortDescription] => <p><b>Property Location</b> <br />With a stay at Hyatt Regency Dallas, you'll be centrally located in Dallas, steps from Reunion Tower and minutes from Dealey Plaza. This 4-star hotel is close to
                                [highRate] => 149.49
                                [lowRate] => 149.49
                                [rateCurrencyCode] => USD
                                [latitude] => 32.77508
                                [longitude] => -96.80985
                                [proximityDistance] => 5.8526316
                                [proximityUnit] => MI
                                [hotelInDestination] => 1
                                [thumbNailUrl] => /hotels/1000000/30000/24800/24753/24753_164_t.jpg
                                [deepLink] => http://travel.ian.com/index.jsp?pageName=hotAvail&cid=55505&hotelID=106103&mode=2&numberOfRooms=1&room-0-adult-total=2&room-0-child-total=0&arrivalMonth=8&arrivalDay=4&departureMonth=8&departureDay=5&showInfo=true&locale=en_US
                                [RoomRateDetailsList] => stdClass Object
                                    (
                                        [RoomRateDetails] => stdClass Object
                                            (
                                                [roomTypeCode] => 200338598
                                                [rateCode] => 202085545
                                                [maxRoomOccupancy] => 4
                                                [quotedRoomOccupancy] => 2
                                                [minGuestAge] => 0
                                                [roomDescription] => Two Queen Beds
                                                [propertyAvailable] => 1
                                                [propertyRestricted] => 
                                                [expediaPropertyId] => 24753
                                                [RateInfos] => stdClass Object
                                                    (
                                                        [@size] => 1
                                                        [RateInfo] => stdClass Object
                                                            (
                                                                [@priceBreakdown] => true
                                                                [@promo] => false
                                                                [@rateChange] => false
                                                                [RoomGroup] => stdClass Object
                                                                    (
                                                                        [Room] => stdClass Object
                                                                            (
                                                                                [numberOfAdults] => 2
                                                                                [numberOfChildren] => 0
                                                                            )

                                                                    )

                                                                [ChargeableRateInfo] => stdClass Object
                                                                    (
                                                                        [@averageBaseRate] => 149.49
                                                                        [@averageRate] => 149.49
                                                                        [@commissionableUsdTotal] => 149.49
                                                                        [@currencyCode] => USD
                                                                        [@maxNightlyRate] => 149.49
                                                                        [@nightlyRateTotal] => 149.49
                                                                        [@surchargeTotal] => 26.92
                                                                        [@total] => 176.41
                                                                        [NightlyRatesPerRoom] => stdClass Object
                                                                            (
                                                                                [@size] => 1
                                                                                [NightlyRate] => stdClass Object
                                                                                    (
                                                                                        [@baseRate] => 149.49
                                                                                        [@rate] => 149.49
                                                                                        [@promo] => false
                                                                                    )

                                                                            )

                                                                        [Surcharges] => stdClass Object
                                                                            (
                                                                                [@size] => 1
                                                                                [Surcharge] => stdClass Object
                                                                                    (
                                                                                        [@type] => TaxAndServiceFee
                                                                                        [@amount] => 26.92
                                                                                    )

                                                                            )

                                                                    )

                                                                [nonRefundable] => 
                                                                [rateType] => MerchantStandard
                                                                [currentAllotment] => 0
                                                            )

                                                    )

                                            )

                                    )

                            )

                        [2] => stdClass Object
                            (
                                [@order] => 2
                                [@ubsScore] => 992620
                                [hotelId] => 110839
                                [name] => Hotel Lawrence
                                [address1] => 302 S Houston Street
                                [city] => Dallas
                                [stateProvinceCode] => TX
                                [postalCode] => 75202
                                [countryCode] => US
                                [airportCode] => DFW
                                [supplierType] => E
                                [propertyCategory] => 1
                                [hotelRating] => 3
                                [confidenceRating] => 52
                                [amenityMask] => 7831555
                                [tripAdvisorRating] => 3
                                [tripAdvisorReviewCount] => 223
                                [tripAdvisorRatingUrl] => http://www.tripadvisor.com/img/cdsi/img2/ratings/traveler/3.0-12345-4.gif
                                [locationDescription] => Near Dallas Convention Center
                                [shortDescription] => <p><b>Property Location</b> <br />With a stay at Hotel Lawrence, you'll be centrally located in Dallas, steps from Old Red Courthouse and John F. Kennedy Memorial. This hotel is close to Dallas World
                                [highRate] => 119
                                [lowRate] => 107.1
                                [rateCurrencyCode] => USD
                                [latitude] => 32.77741
                                [longitude] => -96.80702
                                [proximityDistance] => 5.6781306
                                [proximityUnit] => MI
                                [hotelInDestination] => 1
                                [thumbNailUrl] => /hotels/1000000/800000/794600/794528/794528_24_t.jpg
                                [deepLink] => http://travel.ian.com/index.jsp?pageName=hotAvail&cid=55505&hotelID=110839&mode=2&numberOfRooms=1&room-0-adult-total=2&room-0-child-total=0&arrivalMonth=8&arrivalDay=4&departureMonth=8&departureDay=5&showInfo=true&locale=en_US
                                [RoomRateDetailsList] => stdClass Object
                                    (
                                        [RoomRateDetails] => stdClass Object
                                            (
                                                [roomTypeCode] => 4789
                                                [rateCode] => 4789
                                                [maxRoomOccupancy] => 2
                                                [quotedRoomOccupancy] => 2
                                                [minGuestAge] => 0
                                                [roomDescription] => Standard Room, 1 Queen Bed
                                                [propertyAvailable] => 1
                                                [propertyRestricted] => 
                                                [expediaPropertyId] => 794528
                                                [RateInfos] => stdClass Object
                                                    (
                                                        [@size] => 1
                                                        [RateInfo] => stdClass Object
                                                            (
                                                                [@priceBreakdown] => true
                                                                [@promo] => true
                                                                [@rateChange] => false
                                                                [RoomGroup] => stdClass Object
                                                                    (
                                                                        [Room] => stdClass Object
                                                                            (
                                                                                [numberOfAdults] => 2
                                                                                [numberOfChildren] => 0
                                                                            )

                                                                    )

                                                                [ChargeableRateInfo] => stdClass Object
                                                                    (
                                                                        [@averageBaseRate] => 119.0
                                                                        [@averageRate] => 107.1
                                                                        [@commissionableUsdTotal] => 107.1
                                                                        [@currencyCode] => USD
                                                                        [@maxNightlyRate] => 107.1
                                                                        [@nightlyRateTotal] => 107.1
                                                                        [@surchargeTotal] => 18.15
                                                                        [@total] => 125.25
                                                                        [NightlyRatesPerRoom] => stdClass Object
                                                                            (
                                                                                [@size] => 1
                                                                                [NightlyRate] => stdClass Object
                                                                                    (
                                                                                        [@baseRate] => 119.0
                                                                                        [@rate] => 107.1
                                                                                        [@promo] => true
                                                                                    )

                                                                            )

                                                                        [Surcharges] => stdClass Object
                                                                            (
                                                                                [@size] => 1
                                                                                [Surcharge] => stdClass Object
                                                                                    (
                                                                                        [@type] => TaxAndServiceFee
                                                                                        [@amount] => 18.15
                                                                                    )

                                                                            )

                                                                    )

                                                                [nonRefundable] => 
                                                                [rateType] => MerchantStandard
                                                                [promoId] => 201883354
                                                                [promoDescription] => Free Breakfast Included Daily
                                                                [promoType] => Standard
                                                                [currentAllotment] => 10
                                                            )

                                                    )

                                                [ValueAdds] => stdClass Object
                                                    (
                                                        [@size] => 2
                                                        [ValueAdd] => Array
                                                            (
                                                                [0] => stdClass Object
                                                                    (
                                                                        [@id] => 2
                                                                        [description] => Continental Breakfast
                                                                    )

                                                                [1] => stdClass Object
                                                                    (
                                                                        [@id] => 1024
                                                                        [description] => Free High-Speed Internet
                                                                    )

                                                            )

                                                    )

                                            )

                                    )

                            )

                    )

            )

    )

但我想要特定的数据,如酒店名称,地址等 我的意思是[name] => Hotel Lawrence等我回应它。

因为我正在使用像

这样的组合
echo $response['hotels']->Hotellist->HotelSummary[0]->name;

但是得到解析错误我应该怎么做才能提取特定数据?请帮忙

1 个答案:

答案 0 :(得分:1)

试试这段代码: 此代码为您提供酒店名称地址和酒店ID作为输出。 您可以使用特定的数组名称(因为我用于名称和地址)并将其存储到变量中。这将为您提供您想要的结果。

$url=http://api.ean.com/ean-services/rs/hotel/v3/list?minorRev=99&apiKey=baabqgw8s9xsvn2e2at2yxzb&cid=443449&locale=en_US&city=Dallas&stateProvinceCode=TX&countryCode=US&numberOfResults=3&searchRadius=50&supplierCacheTolerance=MED_ENHANCED&arrivalDate=09/04/2014&departureDate=09/05/2014&room1=2

$obj = json_decode(file_get_contents($url),true);

foreach($obj['HotelListResponse']['HotelList']['HotelSummary'] as $HOTEL)
{
$hname=$HOTEL['name'];
$hadd=$HOTEL['address1'].",".$HOTEL['city'];
$hcity=$HOTEL['city'];
$hid=$HOTEL['hotelId'];

echo "Name:".$hname."<br>Address:".$hadd."(".$hid.")";
}