人力検索はてな
モバイル版を表示しています。PC版はこちら
i-mobile

PHPによるxmlのパースに関して質問です、

ヤフオクAPIでレスポンスフィールドに返ってこないノードがある場合どのように処理すれば良いのでしょうか?
実例を上げると「/ResultSet/Result/Item/Option/FreeshippingIcon」は送料無料アイコンのURLが格納されているのですが、このOption以下のノードは必ずしもあるわけではありません。

例)
<Item>
〜省略〜
<Option>
<FreeShippingIcon>
http://i.yimg.jp/images/auct/template/ui/auc_mod/ic_free_shipping.png
</FreeShippingIcon>
</Option>
〜省略〜
</Item>
<Item>
〜省略〜
<Option>
</Option>
〜省略〜
</Item>

現在foreachで取得し、FreeShippingIconに文字列が入っていれば、「送料無料」と表示したいのですが、上記の通り「/ResultSet/Result/Item/Option/FreeshippingIcon」があったりなかったりする為がうまく行きません。

そこで、ノード「FreeShippingIcon」があるかないかで判断したい(ノード「FreeShippingIcon」があれば送料無料)のですがどのように書けばよいでしょうか?

ちなみに現状は以下です。
foreach ($result->Result->Item as $item) {
$arr[] = array(
'price' => floor($item->CurrentPrice),
'title' => convert($item->Title),
'shipping' => convert($item->Option->FreeshippingIcon) != '' ? '送料無料' : ''
);
}

●質問者: 雨の日
●カテゴリ:ウェブ制作
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● a-kuma3
●100ポイント ベストアンサー

FreeshippingIcon 要素の存在確認は、isset() を使います。

<?php
 ...
 'shipping' => isset($item->Option->FreeshippingIcon) ? '送料無料' : ''

他にも、empty() や count() 、SimpleXMLElement::xpath メソッドを使う方法なんかも。
http://stackoverflow.com/questions/1560827/php-simplexml-check-if-a-child-exists


雨の日さんのコメント
うまくいきました!ありがとうございます。
関連質問

●質問をもっと探す●



0.人力検索はてなトップ
8.このページを友達に紹介
9.このページの先頭へ
対応機種一覧
お問い合わせ
ヘルプ/お知らせ
ログイン
無料ユーザー登録
はてなトップ