这似乎非常愚蠢,但是对于最后2个housr我试图从expedia的EAN api的响应中提取特定数据PHP代码是
$response = json_decode(curl_exec($ch));
print_r($response);
并且答案是
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;
但是得到解析错误我应该怎么做才能提取特定数据?请帮忙
答案 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.")";
}