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


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


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

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

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


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

回答の条件
  • 1人3回まで
  • 13歳以上
  • 登録:2011/03/29 13:42:37
  • 終了:2011/03/29 14:17:12

ベストアンサー

id:windofjuly No.1

うぃんど回答回数2625ベストアンサー獲得回数11492011/03/29 13:59:31

ポイント150pt

>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');

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

id:love-peanut

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

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

2011/03/29 14:16:43

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

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

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

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

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