【发布时间】:2016-11-11 20:42:50
【问题描述】:
我注意到,当使用具有虚假值的变量时,switch 语句会产生错误的结果。
例如:
$total = 0; // Same results with '' as a value
switch ($total) {
case 5:
echo "Five";
break;
case 10:
echo "Ten";
break;
case $total >= 10:
echo "More than or equal to one";
break;
default :
echo "Anything";
}
此脚本回显的字符串是“大于或等于一”。
你能告诉我是否需要做一些不同的事情来使 switch 语句使用假值吗?如果您更喜欢这样的东西,链接也会非常有帮助,任何形式的帮助都会受到欢迎。
感谢您的宝贵时间。
【问题讨论】:
-
case $total >= 10:?您不能像那样单独使用(大于或等于)表达式,您只能分配;表达式在if中计算,我看不出你是如何测试它的。 -
@Fred-ii- 感谢您的评论。你确定不能这样吗?我认为这并没有真正被认为是错误的(例如:stackoverflow.com/a/24813225/3915624)。
-
注意
switch的用法switch (true) {,而不是switch ($variable)。见eval.in/676379 和eval.in/676378 -
哦,我明白了;嗯,这对我来说是第一次。一个人永远不会停止学习;-)
-
@chris85
$total >= 10返回true或false。当它与整数$total进行比较时,它会被转换为1或0。所以它相当于case 1:或case 0:,具体取决于$total的值。
标签: php