开发实践中,经常遇到这种情况:
某事件有N(N>=3)种状态,每种状态下都有不同的输出。
以前都是硬编码,一眼望去,这种方法看不出弊端,并且只要你了解php的基本语法,任何人都能编写出来,是一种快速的解决方案。
view source
print?
01if($start> $_SERVER['REQUEST_TIME'])
02{
03$status= 0;
04}elseif(($start< $_SERVER['REQUEST_TIME']) && ($_SERVER['REQUEST_TIME'] < $end))
05{
06$status= 1;
07}elseif($_SERVER['REQUEST_TIME'] > $end)
08{
09$status= 2;
10}
11
12if( $status== 0 )
13{
14echo'statusA';
15}
16elseif( $status== 1)
17{
18echo'statusC';
19}
20elseif( $sattus== 2)
21{
22echo'statusB';
23}
今天,又碰到这种情况,停下来思考下,找到一种改进的输出方法,拿出来与大家分享,也希望能得到高人的指点。
view source
print?
1$status= ($start< $_SERVER['REQUEST_TIME']) << ($_SERVER['REQUEST_TIME'] < $end);
2
3$html= array(
40 => 'statusA',
52 => 'statusB,
61 => 'statusC',
7);
8echo$html[$status];
使用条件进行位移运算,把不同状态下需要输出的结果按照位移运算的结果进行编号,这样就可以直接拿位置结果在数组里定位内容并输出。