该switch语句通过case依次评估每个表达式并将结果与switch表达式进行比较来工作.如果两个表达式是等价的,则执行case块(在break/ continueconstructs 建立的约束内).您可以使用此事实将任意布尔表达式包含为case表达式.例如:
<?php
$i = 3;
$k = 'hello world';
switch (true) {
case 3 == $i and $k == 'hi there';
echo "first case is true\n";
break;
case 3 == $i and $k == 'hello world';
echo "second case is true\n";
break;
} //switch
?>
Run Code Online (Sandbox Code Playgroud)
这输出:
second case is true
Run Code Online (Sandbox Code Playgroud)
我不经常使用这种结构(而是更喜欢避免这种复杂的逻辑),但有时会出现一个复杂的if-then语句可能会被使用,并且可以使这些片段更容易阅读.