2017-03-01 74 views
0

我不明白一点。简单的switch语句不是零值(=0)正常工作:值为零时PHP脚本错误

//$result = $sql->fetchColumn(); 
$result = 1; 
     switch ($result) {  
      case $result <= 2 : 
       throw new Exception('Error!'); 
       break; 
         } 

问题是,当$result = 0那么输出应该是“错误”,但在这种情况下,脚本通过此验证。奇怪的问题,但我找不到问题。

+0

正常** ** IF语句应该是你的朋友在这种情况下 –

+0

这仅仅是一个代码的片段。我需要找出为什么发生这种情况 – Klapsius

+2

你不明白switch语句是如何工作的。在switch语句中不能执行“大于......小于”等。你只能为特定的号码做一个案例。 http://us2.php.net/manual/en/control-structures.switch.php – Twinfriends

回答

1

你可以写这样的:

<?php 
switch ($i) { 
case 0: 
case 1: 
case 2: 
    throw new Exception('Error!'); 
    break; 
case 3: 
    echo "i is 3 or higher."; 
} 
?> 

正如我所说的上面我的意见,你不能用“擦菜板除”“小于switch语句”等。正如其他人所说,如果你想使用它们,请使用简单的IF声明。

0

这个代码

switch ($result) {  
     case $result <= 2 : 

相当于

if($result == ($result <= 2)) 

$result=0 

我们

(0 == true) 

类型转换

false === true 

后,这是错误的预期