- ベストアンサー
コードを簡素化したいです
こんにちは。お世話になります。 元々、$modeは、time()から取得したもので、「1090693556」のように、数字データです。 ですが、後処理によって、一部の$modeに別の変数を代入して、下記のような処理をさせました。 if(($mode == "jun_0001") || ($mode == "jun_0002") || ($mode == "jun_0003") || ($mode == "jun_0004")){ echo "...........\n"; } それで、現在はjun_0001~jun_004の4つですが、もっと数が増えると辛いので、preg_matchでも使った、シンプルコードには出来ないでしょうか? 教えて下さい。
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
preg_matchを使うのであれば、正規表現を使って 例えば、以下のようにすると $mode が 'jun_数字' のパターンにマッチして条件分岐できます。 $pre = 'jun_'; if ( preg_match("/^$pre(\d+)$/", $mode) ) { マッチした } else { マッチしない } 正規表現の部分は適宜、工夫してみてください。 preg_match は Perl互換の正規表現が使えるようです。
その他の回答 (3)
$chkstr = array("jun_0001","jun_0002","jun_0003","jun_0004"); for($i=0;$i<count($chkstr);$i++) { if($mode == $chkstr[$i]) { echo "......"; break; } } 自己補足。 break入れないと駄目でスね。
お礼
ありがとうございます。 結局、この質問をした内容部分は、他のものに置き換えて 取りあえず完了しているんですが、正規表現の方法や、 forの使い方を勉強させていただきました。 改めまして、回答して頂いた皆様へ、お礼申し上げます。
$chkstr = array("jun_0001","jun_0002","jun_0003","jun_0004"); for($i=0;$i<count($chkstr);$i++) { if($mode == $chkstr[$i]) { echo "......"; } } とかは駄目でスか。
お礼
どうも ありがとうございます。 お礼が遅くなりまして申し訳ありませんでした。 メールが来ないので、何も解答がないと思ってました。
- moon_night
- ベストアンサー率32% (598/1831)
単純に jun_0001 jun_0002 ... と、連番であるならば $x = 10; # ループ回数 for ($i=1;$i<$x;$i++) { $ch = printf("jun_%04d",$i); # 文字 + 4桁整数に整形 if ($mode == $ch) { echo "処理<br>\n"; break; } } というのはいかがでしょうか。
お礼
どうも ありがとうございます。 お礼が遅くなりまして申し訳ありませんでした。 メールが来ないので、何も解答がないと思ってました。
お礼
どうも ありがとうございます。 お礼が遅くなりまして申し訳ありませんでした。 メールが来ないので、何も解答がないと思ってました。