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

楽天ウェブサービスの、PHPの質問です。

http://q.hatena.ne.jp/1301363070
のコメント欄で、2箇所に違うキーワードの出力をする方法を教えていただきました。


おかげさまで、サイドバーにカバンを出力、フッターに靴を出力というのができるようになったのですが、
例えば、サイドバーの場合は画像を「medium」フッターの場合は「small」を使いたい場合はどうすれば
良いのでしょうか?(あるいは、一方は画像のみで、もう一方は画像と商品名など)
とにかく、違うキーワードで違う出力を、同じページ内でしたいということです。

先のコメント欄で、
「簡単に説明すると、
function search_rakuten($keyword,$limit){

}
の部分は関数定義をしているだけです。関数は1度定義すれば2回呼べます。逆にこれを2回書いてはいけません。」
と頂いたので、どうすれば良いのか気になっています。


昨日から楽天APIの関連質問を連続でしているので、これで最後にしたいと思います。
どうか、よろしくお願いいたします。

●質問者: うんこ
●カテゴリ:ウェブ制作
✍キーワード:API keyword Medium PHP ウェブサービス
○ 状態 :終了
└ 回答数 : 1/1件

▽最新の回答へ

1 ● うぃんど
●150ポイント ベストアンサー

>2回書いてはいけません

search_rakuten という関数が2箇所にあると、

どちらを呼び出したらよいかわからずにエラーになるということですから、

一番簡単な対処方法は次のように別の名前でそれぞれ用意してしまうことです

function search_rakuten_medium($keyword,$limit){
 省略
 $ret .= '<img src="'.$Item->mediumImageUrl.'" alt="'.$Item->itemName.'">';
 省略
}

function search_rakuten_small($keyword,$limit){
 省略
 $ret .= '<img src="'.$Item->smallImageUrl.'" alt="'.$Item->itemName.'">';
 省略
}

上の方法は簡単なのですが、

同じようなコードを何度も書くとプログラムがどんどんと長くなってしまい、

結果としてミスを起こしやすく、また、トラブルの原因をを探しづらくしますので、

今回のような場合は下記のようにしたりします

function search_rakuten($keyword,$limit,$size){
 省略
 if ( $size == 1 ) {
 foreach($Items as $Item){
 $ret .= '<a href="'.$Item->affiliateUrl.'">';
 $ret .= '<img src="'.$Item->smallImageUrl.'" alt="'.$Item->itemName.'">';
 $ret .= "</a>\n";
 }
 } else {
 foreach($Items as $Item){
 $ret .= '<a href="'.$Item->affiliateUrl.'">';
 $ret .= '<img src="'.$Item->mediumImageUrl.'" alt="'.$Item->itemName.'">';
 $ret .= "</a>\n";
 }
 }
 省略
}
省略
echo search_rakuten($keyword,$limit,1);

引数として数値の1を用いましたが文字列(smallやmediumなど)を用いても良いです

 if ( $size == 'small' ) {
省略
echo search_rakuten($keyword,$limit,'small');

複雑な条件分岐になる場合は他の書き方になる場合もありますので、上記は一例として受け取っておいてください

◎質問者からの返答

ものすごく分かりやすくて、かゆいところに手が届いたという感じの、ご回答です。

本当に、ありがとうございました!

関連質問


●質問をもっと探す●



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