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

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

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

どもです。

例えば様々な項目の中に「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を返してやらないとダメっぽい。

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