【发布时间】:2018-02-05 16:45:37
【问题描述】:
$letters = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h'];
$x = (1==1 || 2==2);
$y = (3==3 || 4==4);
$z = (5==5);
foreach ($letters as $key => $letter) {
switch ($letter) {
case 'a':
echo "a";
break;
case 'b':
echo "b";
break;
case 'c':
echo "c";
break;
case 'd':
echo "d";
break;
case 'e':
echo "e";
break;
case 'f':
echo "f";
break;
case 'g' && ($z || $y):
echo "g";
break;
case 'h' && ($x):
echo "h";
break;
}
}
我不知道为什么,但在最后两种情况下 'g' 和 'h' 它不能正常工作并得到双 'g',我期望的结果是
abcdefgh 但我一直收到 abcdefgg,我做错了什么?
【问题讨论】:
-
case 'g' && ($z || $y):不会工作 -
$x = (1==1 || 2==2)有什么意义? -
switch ($foo): case 'bar':转换为if ($foo == 'bar')... 应该很明显为什么 case 'g' 不起作用。 -
@UlrichEckhardt 只是原始代码的一个示例。此值和原始值或任何值都给出相同的值。
-
好吧,如果不需要演示任何东西,那就把这些东西放在一边!你应该提供一个最小的例子来保持这里问题的质量,添加干扰项也无济于事。
标签: php switch-statement