$t = true;
switch($t)
{
case 1*2:
echo 1;
}
答案 0 :(得分:11)
答案 1 :(得分:4)
switch
语句在测试表达式与case
标签中的表达式之间执行loose comparison。
在这种情况下,这意味着编译器确定是否true == 2
。由于任何非零整数比较等于true
,因此将执行分支并执行echo 1;
。
这是一个不太直观的例子,其中完全相同的机制有效。你可以用相同的逻辑来解释它:
$foo = 'hello';
switch($foo) {
case 'A' || 'B':
echo "Test succeeded";
}
过去我在向新手教授PHP时使用过这个例子,让他们了解松散类型的语言是如何工作的。
答案 2 :(得分:0)
在PHP(以及大多数编程语言中)中,非零值表示在条件语句中处理时为true。在这种情况下, $ t (true)等于任何不同于零的数字,因此它与案例条件匹配。输出将为1.