PHP switch/case语句中允许使用正则表达式吗?如何使用它们?
wa7juj8i1#
switch case语句的工作原理类似于if-elseif。你可以在if-elseif中使用regex,也可以在switch-case中使用它。
if (preg_match('/John.*/', $name)) { // do stuff for people whose name is John, Johnny, ... }
可编码为:
switch $name { case (preg_match('/John.*/', $name) ? true : false) : // do stuff for people whose name is John, Johnny, ... break; }
xpszyzbs2#
否或仅有限。例如,您可以切换为true:
true
switch (true) { case $a == 'A': break; case preg_match('~~', $a); break; }
这基本上给出了一个if-elseif-else语句,但是使用了switch的语法和可能性(例如fall-through)。
if-elseif-else
switch
mitkmikd3#
可以,但是您应该使用此技术来避免switch参数取值为false时出现的问题:
false
switch ($name) { case preg_match('/John.*/', $name) ? $name : !$name: // do stuff }
qkf9rpyu4#
请记住,上面的答案可以稍微优化如下:变更:
收件人:
switch $name { case (bool)preg_match('/John.*/', $name) : // do stuff for people whose name is John, Johnny, ... break; }
4条答案
按热度按时间wa7juj8i1#
switch case语句的工作原理类似于if-elseif。
你可以在if-elseif中使用regex,也可以在switch-case中使用它。
可编码为:
xpszyzbs2#
否或仅有限。例如,您可以切换为
true
:这基本上给出了一个
if-elseif-else
语句,但是使用了switch
的语法和可能性(例如fall-through)。mitkmikd3#
可以,但是您应该使用此技术来避免switch参数取值为
false
时出现的问题:qkf9rpyu4#
请记住,上面的答案可以稍微优化如下:
变更:
收件人: