PHP开关故障

PHP开关故障,php,switch-statement,Php,Switch Statement,当你困倦的时候,在Ruby开关之后再看看PHP开关 更新3(答案) 请参阅下面的问题。这是我的错。好的:)。在PHP中。通过他的动态类型转换(false->(int)false->0:这里我得到的0等于我的'>=17,17,21,26,36,46'; 打破 } 回显$item.'.$case.; } //输出 -5 <16 -4 <16 -3 <16 -2 <16 -1 <16 0 >=17_<=20 // WHY???????!!!!!!

当你困倦的时候,在Ruby开关之后再看看PHP开关

更新3(答案)

请参阅下面的问题。这是我的错。好的:)。在PHP中。通过他的动态类型转换(false->(int)false->0:这里我得到的
0
等于我的
'>=17,17,21,26,36,46';
打破
}
回显$item.'.$case.
; }
//输出

 -5 <16
 -4 <16
 -3 <16
 -2 <16
 -1 <16
 0 >=17_<=20 // WHY???????!!!!!!!!!!!!!!
 1 <16
 2 <16
 3 <16
 4 <16
 5 <16
-5 <16
-4 <16
-3 <16
-2 <16
-1 <16
0 >=17_<=20 // WHY ?
1 <16
2 <16
3 <16
4 <16
5 <16
6 <16
7 <16
8 <16
9 <16
10 <16
11 <16
12 <16
13 <16
14 <16
15 <16
16 <16
17 >=17_<=20
18 >=17_<=20
19 >=17_<=20
20 >=17_<=20
21 >=21_<=25
22 >=21_<=25
23 >=21_<=25
24 >=21_<=25
25 >=21_<=25
26 >=26_<=35
27 >=26_<=35
28 >=26_<=35
29 >=26_<=35
30 >=26_<=35
31 >=26_<=35
32 >=26_<=35
33 >=26_<=35
34 >=26_<=35
35 >=26_<=35
36 >=36_<=45
37 >=36_<=45
38 >=36_<=45
39 >=36_<=45
40 >=36_<=45
41 >=36_<=45
42 >=36_<=45
43 >=36_<=45
44 >=36_<=45
45 >=36_<=45
46 >=46
47 >=46
-5表达式
($item>=17)和($item由于“0”的计算结果为false,因此出现错误。请尝试以下操作:

<?
  echo 0==(0>=17) && (0<=20)); //true
?>

您可能不应该在此处使用开关。请使用以下命令:

$range = range(-5,5);

foreach($range as $item){
    if ($item<=16)
        $case = '<16';
    else if ( ($item>=17) && ($item<=20))
        $case = '>=17_<=20';
    else if( ($item>=21) && ($item<=25))
        $case = '>=21_<=25';


     echo $item.' '.$case.'<br/>';
 }
$range=范围(-5,5);
foreach($范围为$项目){

如果($item=17)和($item=21)和($Item您的开关/案例逻辑没有多大意义。您将每个
case
语句像
if
语句一样使用,而不是使用开关。您到底为什么要使用开关???因为您看到的是您所看到的。这并不奇怪。停止滥用开关语句,您就没有这个问题。您混合了
if
使用
开关
更新的问题,请查看您的更新仍然显示您不了解如何使用switch/case。如果答案中有类似的陈述,请将其切换到
    $item = 0;
    if (($item>=17) && ($item<=20)){ // false
        // never for  <17 & >20
    }

    item = 0;
    $checking  = (($item>=17) && ($item<=20)); // false
    if ($checkig){
        // never for  <17 & >20
    }

    item = 0;
    $checkig = (($item>=17) && ($item<=20)) ? true : false; // false
    if ($checkig){
         // never for  <17 & >20
    }      

    $item = 0;
    switch($item){
       case ( ($item>=17) && ($item<=20)): // false
          // never for  <17 & >20
          break;
    }
      $range = range(-5,47);
           //var_dump($range);

            foreach($range as $item){
                  switch($item){
                      case ($item<=16):
                            $case = '<16';
                            break;
                      case ( ($item>=17) && ($item<=20)):
                            $case = '>=17_<=20';
                            break;
                      case ( ($item>=21) && ($item<=25)):
                            $case = '>=21_<=25';
                            break;
                      case ( ($item>=26) && ($item<=35)):
                            $case = '>=26_<=35';
                            break;
                      case ( ($item>=36) && ($item<=45)):
                             $case = '>=36_<=45';
                             break;
                       case ( ($item>=46)):
                             $case = '>=46';
                             break;
                   }

                    echo $item.' '.$case.'<br/>';
           }
-5 <16
-4 <16
-3 <16
-2 <16
-1 <16
0 >=17_<=20 // WHY ?
1 <16
2 <16
3 <16
4 <16
5 <16
6 <16
7 <16
8 <16
9 <16
10 <16
11 <16
12 <16
13 <16
14 <16
15 <16
16 <16
17 >=17_<=20
18 >=17_<=20
19 >=17_<=20
20 >=17_<=20
21 >=21_<=25
22 >=21_<=25
23 >=21_<=25
24 >=21_<=25
25 >=21_<=25
26 >=26_<=35
27 >=26_<=35
28 >=26_<=35
29 >=26_<=35
30 >=26_<=35
31 >=26_<=35
32 >=26_<=35
33 >=26_<=35
34 >=26_<=35
35 >=26_<=35
36 >=36_<=45
37 >=36_<=45
38 >=36_<=45
39 >=36_<=45
40 >=36_<=45
41 >=36_<=45
42 >=36_<=45
43 >=36_<=45
44 >=36_<=45
45 >=36_<=45
46 >=46
47 >=46
switch($item){
       case (1):
         $case = '<16';
         break;
       case ( 0):
         $case = '>=17_<=20';
         break;
       case ( 0):
         $case = '>=21_<=25';
         break;
 }
<?
  echo 0==(0>=17) && (0<=20)); //true
?>
$range = range(-5,5);

foreach($range as $item){
    if ($item<=16)
        $case = '<16';
    else if ( ($item>=17) && ($item<=20))
        $case = '>=17_<=20';
    else if( ($item>=21) && ($item<=25))
        $case = '>=21_<=25';


     echo $item.' '.$case.'<br/>';
 }