2017-09-15 38 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) 
...