PHPで以下のように連想配列で・・・と思ったら
Warning: Invalid argument supplied for foreach()
こんな警告が出てきて、調べたら配列じゃないよ!という意味だと分かりました。
自分では問題なく書いているつもりなんですけど、
これのどこが問題なんでしょうか?
分かる方がおられましたら、宜しくお願いします。
(上部省略)
$xml = simplexml_load_string($data);
foreach($xml->Body->simpleHotelSearch->hotel->hotelBasicInfo as $hotel){
$hotelName = $hotel->hotelName;
$hotelSpecial = $hotel->hotelSpecial;
$address1 = $hotel->address1;
$address2 = $hotel->address2;
$access = $hotel->access;
$hotelImageUrl = $hotel->hotelImageUrl;
$userReview = $hotel->userReview;
(以下省略)
Warning: Invalid argument supplied for foreach() と出てきても、foreach以下だけが問題ではない場合もありますので、本当は全文載せたほうが回答しやすいと思います。
Body->simpleHotelSearchではなく、
Body->SimpleHotelSearchSimpleHotelSearchではないでしょうか。
また楽天の場合、ほかのAPIと違って特殊で、xml中にSimpleHotelSearch:SimpleHotelSearchと出てくるので、str_replaceで:を置き換えする式が必要です。
そのあたりはされてますか?
$xml = simplexml_load_string($data);
の後に
var_dump($xml)
と書いて、実際取得したデータを見てください。
配列になってるかどうかもこれでわかります。