• ベストアンサー

PHPに関する質問です

PHPに関して素人なのですが、是非お力をお貸し下さいませ。 下記の内容は「商品番号」が「B001」なら「700円」がプラスされる仕組みです。 そして「B001」以外なら「0円」がプラスされるようになっております。 ここまでは問題なく動作しているのですが、この内容を、 「商品番号にBが含まれていたら700円プラス」に変更する場合はどのように記述したらよいでしょうか? EC-CUBEをカスタマイズしていたのですが、 なにぶん素人ですので上手くできませんでした。 是非どなたかご教授下さいませ。 ------------------------------------------------------ // 送料カテゴリごとの個別設定 $arrProductsFee = array(); foreach ($objPage->arrProductsClass as $item) { switch ($item['product_code']) { case 'B001': $arrProductsFee[$item['product_code']] = 700; break; default: $arrProductsFee[$item['product_code']] = 0; } } $arrData['deliv_fee'] += array_sum($arrProductsFee); ------------------------------------------------------ 何卒宜しくお願い致します。

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

たとえばpreg_match <? $arrProductsFee = array(); $pattern="/B/"; foreach ($objPage->arrProductsClass as $item) { $arrProductsFee[$item['product_code']] = 0; if(preg_match($pattern,$item['product_code'])) { $arrProductsFee[$item['product_code']] = 700; } } $arrData['deliv_fee'] += array_sum($arrProductsFee); ?> もし、Bがbでもマッチしたいなら $pattern="/B/i"; もし、Bで始まるものにマッチしたいなら $pattern="/^B/";

itodasan
質問者

お礼

見事に問題が解決致しました。 本当にありがとうございました。 わずか7分で的確かつ丁寧なコメントを頂けるとは思いませんでした。 あとはこの「商品番号にBが含まれている商品」単体がカートに入ったら700円はプラスされないようにする・・・という最後の問題と戦っていますが、こちらはEC-CUBEに関する新しい質問を立てようかと思っております。 ありがとうございました。

その他の回答 (1)

  • ts3m-ickw
  • ベストアンサー率43% (1248/2897)
回答No.2

switch{~}を if (strpos($item['product_code'],'B')>0) $arrProductsFee[$item['product_code']] = 700; とすればいいと思います。

itodasan
質問者

お礼

素早い回答ありがとうございます。 こちらの方法では上手くいきませんでしたが、参考になりました。 ありがとうございました。

関連するQ&A