PHP开关故障
当你困倦的时候,在Ruby开关之后再看看PHP开关 更新3(答案) 请参阅下面的问题。这是我的错。好的:)。在PHP中。通过他的动态类型转换(false->(int)false->0:这里我得到的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???????!!!!!!
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/>';
}