regexp在switch语句中

在PHP开关/ case语句中是否允许使用正则expression式以及如何使用它们?

开关大小写的语句就像if-elseif一样工作。
和if-elseif一样,你也可以使用正则expression式,你也可以在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; } 

希望这可以帮助。

没有或只有有限的。 你可以例如切换为true

 switch (true) { case $a == 'A': break; case preg_match('~~', $a); break; } 

这基本上为您提供了一个if-elseif-else语句,但却带有语法和switch可能性(例如,逐句通过)。

是的,但是您应该使用这种技术来避免在开关参数变为false时出现问题:

 switch ($name) { case preg_match('/John.*/', $name) ? $name : !$name: // do stuff }