楽天トラベルAPIの最新Version2009-10-20で

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;

(以下省略)

回答の条件
  • URL必須
  • 1人2回まで
  • 13歳以上
  • 登録:2011/01/23 23:23:58
  • 終了:2011/01/24 00:29:51

ベストアンサー

id:koushic No.2

koushic回答回数1ベストアンサー獲得回数12011/01/24 00:05:59

ポイント45pt

Warning: Invalid argument supplied for foreach() と出てきても、foreach以下だけが問題ではない場合もありますので、本当は全文載せたほうが回答しやすいと思います。

Body->simpleHotelSearchではなく、

Body->SimpleHotelSearchSimpleHotelSearchではないでしょうか。

また楽天の場合、ほかのAPIと違って特殊で、xml中にSimpleHotelSearch:SimpleHotelSearchと出てくるので、str_replaceで:を置き換えする式が必要です。

そのあたりはされてますか?





http://q.hatena.ne.jp/answer

id:hiroponta

他のサイトなどを見て置き換えは行いましたが、別の場所が間違っていたようです。

省略した上の部分が間違えていたようなので、訂正してみます。

はてなが500文字制限で全部載せれませんでしたが、次からURL示して書きたいと思います。

回答頂きましてありがとうございました★

2011/01/24 00:29:17

その他の回答(2件)

id:hanako393 No.1

hanako393回答回数1142ベストアンサー獲得回数872011/01/24 00:01:39

ポイント50pt

$xml = simplexml_load_string($data);

の後に

var_dump($xml)

と書いて、実際取得したデータを見てください。

配列になってるかどうかもこれでわかります。

http://q.hatena.ne.jp/answer

id:hiroponta

PHP初心者なので、デバグ処理を忘れておりました。

これをやれば、データが入っているか分かるんでしたね。

あ・・・・データ取得で既に失敗していました。

省略した上部に間違いがあったようです、ありがとうございました★

2011/01/24 00:26:41
id:koushic No.2

koushic回答回数1ベストアンサー獲得回数12011/01/24 00:05:59ここでベストアンサー

ポイント45pt

Warning: Invalid argument supplied for foreach() と出てきても、foreach以下だけが問題ではない場合もありますので、本当は全文載せたほうが回答しやすいと思います。

Body->simpleHotelSearchではなく、

Body->SimpleHotelSearchSimpleHotelSearchではないでしょうか。

また楽天の場合、ほかのAPIと違って特殊で、xml中にSimpleHotelSearch:SimpleHotelSearchと出てくるので、str_replaceで:を置き換えする式が必要です。

そのあたりはされてますか?





http://q.hatena.ne.jp/answer

id:hiroponta

他のサイトなどを見て置き換えは行いましたが、別の場所が間違っていたようです。

省略した上の部分が間違えていたようなので、訂正してみます。

はてなが500文字制限で全部載せれませんでしたが、次からURL示して書きたいと思います。

回答頂きましてありがとうございました★

2011/01/24 00:29:17
id:deflation No.3

deflation回答回数1036ベストアンサー獲得回数1262011/01/24 00:24:20

ポイント10pt

SimpleXMLの記法が間違っています。

以下のように修正してみてください。

$xml = simplexml_load_string($data);
$simpleHotelSearch = $xml->Body->children($xmlns['simplehotelsearch']);
$hotel0 = $simpleHotelSearch->SimpleHotelSearch->children();
$hotels = $hotel0->hotel;

foreach($hotels as $hotel){
    $hotelName = $hotel->hotelName;
    $hotelSpecial = $hotel->hotelSpecial;
--省略--

参考「楽天トラベル施設検索API (version:2009-10-20)

コメントはまだありません

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません