• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPで似たコードを繰り返す場合の簡潔な書き方??)

PHPで似たコードを繰り返す場合の簡潔な書き方

このQ&Aのポイント
  • PHPで似たコードを繰り返す場合、効率的な方法はありますか?
  • データベースのデータを表示する際に、似たようなPHPコードを繰り返しています。効率的な書き方はありますか?
  • PHPで同じような処理を繰り返す場合、コードを簡潔にする方法はありますか?

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

  • ベストアンサー
  • mpro-gram
  • ベストアンサー率74% (170/228)
回答No.2

pregの正規表現用の文字列と出力文字とが対応してるなら、それらを配列に入れて、さらにチェックされる側も複数なので、2重ループで回せば? 固定文字の有無を調べてるのなら、pregより、strpos() の方が速いですけど <?php $needles = array('新規','更新','削除'); for( $i=1; $i<=5; $i++ ){ $haystack = $row[ 'status'.$i ]; $chk = 0; foreach( $needles as $nee ){ if( strpos($haystack, $nee) !== false ){ $table .= $haystack.' '. $nee . 'です。'; $chk ++; break; } } if( $chk<1 ){ $table .= $haystack.' いずれでもありません。'; } }

rabbit-kimura
質問者

お礼

ご回答ありがとうございます!! >> for( $i=1; $i<=5; $i++ ){ for文というのでしょうか、使いこなせてなくてこのような使い方すればよいのですね・・・ 勉強になりました、無事できました!!

その他の回答 (3)

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.4

Ano3 間違いすみません。 $row は status1~5だけとは限りませんでしたね。 foreach($row ~ )の部分はANo2さんのように forにして番号を付加したり、あるいは別の配列を用意して  foreach( array($row['status1'],$row['status2'] ~)  と必要な部分のみ回るようにする必要があります。

rabbit-kimura
質問者

お礼

追記もありがとうございます参考になりました!!

  • JaneDue
  • ベストアンサー率75% (263/350)
回答No.3

検索語と、それぞれに対応させる語句を配列にしておいて、後方参照で取り出す方法もあります。 $texts = array("新規"=>" 新規です","更新"=>" 更新です","削除"=>" 削除です"); $table = ''; foreach($row as $val){ $table .= preg_match("/新規|更新|削除/",$val,$match) ? $val.$texts[$match[0]]: "いません"; } echo $table; ? : については三項演算子を参照下さい。 http://php.net/manual/ja/language.operators.comparison.php また、if/else でやる場合は、if(){}~else{ if(){}} と入れ子にしなくても elseif があります。 http://jp2.php.net/manual/ja/control-structures.elseif.php

rabbit-kimura
質問者

お礼

ご回答ありがとうございます!! すっごくまとまるのですね・・・参考になります!! また elseif についてなのですが、こちらも補足ありがとうございました!! 他所にも多量に if(){}~else{ if(){}} 使ってましたので 早速活用することができました、ありがとうございます!!

  • piraippi
  • ベストアンサー率27% (47/168)
回答No.1

単純statusを受けとって、「新規です」とか「更新です」とかを返すファンクションをつくればいいのではないですか?

rabbit-kimura
質問者

お礼

お早いご回答ありがとうございます!! やはり私は、単純なものをダラダラ書いてたんですね・・・ functionですね、これは勉強不足でした、活用してみます!!

関連するQ&A