2017-09-15 71 views
1

PREAMBLE:$状态可以有3周可能值:PHP:评估在切换码错误

  • 1)0(零,INT)
  • 2)'Set Level: 10 %'(字符串)
  • 3) 'Set Level: 20 %' (字符串)

我有一个不返回正确值的开关代码。

这是代码:

<?php 

$state = 0; 

switch ($state) { 

      case 'Set Level: 10 %': 

       $return = 1; 

      break; 

      case 'Set Level: 20 %': 

       $return = 2; 

      break; 

      default: 

       $return = 0; 

      break; 

     } 

     echo 'return:'; 

     var_dump($return); 

这是小提琴:https://3v4l.org/IQ142

随着$state = 0返回1,而不是0,为默认值。我也尝试删除默认值并强制实例0:但没有更改。

谢谢

注意:$state也可以像字符串。为此,我需要检查字符串。

+2

@MichaelBerkowski你怎么知道OP是不是有可能传递一个字符串到交换机? – GrumpyCrouton

+0

@MichaelBerkowski是的,这应该是默认的,因为它不是一个字符串,但它不。 – GrumpyCrouton

+0

@GrumpyCrouton我们被迫假设$ state是一个整数,因为OP没有说明传入了什么$ state。 – clearshot66

回答

5

您无法将int与字符串进行比较。在将$state发送到switch之前,请将字符串转换为字符串。这会给你正确的结果。

 
$state = 0; 

switch((string)$state) 
...