ど素人から毛を生やす。<延>

[php]switch->caseの中で正規表現してみた

Web > PHP 2017年9月13日(最終更新:7年前)

2017年9月13日に作成されたページです。
情報が古かったり、僕が今以上のど素人だった頃の記事だったりする可能性があります。

どもです。

例えば様々な項目の中に「url1」から「url5」までがあるとして、
これをswitchで処理したい場合があったとします。

このとき、「urlX」は同じ処理にしたい。
その場合、こういう書き方になると思います。


switch($row){
	case name : name();  break;
	case image: image(); break;
	case url1 :
	case url2 :
	case url3 :
	case url4 :
	case url5 : url();   break;
}

これ、URLが例えば20まで増えたら?

case20個書くの?? うへぇ。嫌だぁ。


switch($row){
	case preg_match("/^image_url[0-9]+$/", $col_k)===1 : url(); break;
}

と思ったら、caseには関数や条件式が使えたのか。

ここで注意したいのが、if()だとpreg_match()でいいところが、switchだとpreg_match()===1になる点。

ifの場合、preg_match()でマッチできたときは1≒trueが入って問題ないのですが、
switchの場合はきちんとtrueを返してやらないとダメっぽい。

この記事は役に立ちましたか?
  • (`・ω・´) 役に立った (0)
  • _(:3」∠)_ 面白かった (1)
  • (・∀・) 参考になった (1)