尝试根据php时间显示正确的渐变颜色。当我尝试它时,渐变不匹配(I.E. topcolor从第一小时块和底色从第四小时块块匹配在一起)。
<?php
$time = date("H");
if( $time >= 06 && $time < 12 )
$topcolor = 'black';
$bottomcolor = 'orange';
if( $time >= 12 && $time < 18 )
$topcolor = 'pink';
$bottomcolor = 'purple';
if( $time >= 18 && $time < 24 )
$topcolor = 'yellow';
$bottomcolor = 'blue';
if( $time >= 24 && $time < 6 )
$topcolor = 'red';
$bottomcolor = 'green';
?>
<style>
body {
background: <?php echo $bottomcolor;?>;
background: -webkit-linear-gradient(<?php echo $topcolor;?>, <?php echo $bottomcolor;?>) <?php echo $bottomcolor;?>;
background: -o-linear-gradient(<?php echo $topcolor;?>, <?php echo $bottomcolor;?>) <?php echo $bottomcolor;?>;
background: -moz-linear-gradient(<?php echo $topcolor;?>, <?php echo $bottomcolor;?>) <?php echo $bottomcolor;?>;
background: linear-gradient(<?php echo $topcolor;?>, <?php echo $bottomcolor;?>) <?php echo $bottomcolor;?>;
background-repeat: no-repeat;
}
</style>
答案 0 :(得分:1)
您需要在大括号中的每个if
条件之后包装语句:
if( $time >= 06 && $time < 12 )
$topcolor = 'black';
$bottomcolor = 'orange';
- &GT;
if( $time >= 06 && $time < 12 ) {
$topcolor = 'black';
$bottomcolor = 'orange';
}
如果省略这些,则仅评估第一个语句。见http://php.net/manual/en/control-structures.if.php
上一个$bottomcolor
生效的原因是,无论$time
值是什么,该变量的所有赋值都在运行,最后一个赋值优先。
答案 1 :(得分:0)
您可以从documentation if
语句中了解到:
if (expression)
statement
关于statements:
语句可以是赋值,函数调用,循环,条件语句,甚至是不执行任何操作的语句(空语句)。声明通常以分号结尾。此外,通过使用花括号封装一组语句,可以将语句分组到语句组中。声明组本身也是一种声明。
根据我们刚刚获得的新智慧,你的代码与此相同(缩进无关紧要,只有美容):
$time = date("H");
if ($time >= 06 && $time < 12)
$topcolor = 'black';
$bottomcolor = 'orange';
if ($time >= 12 && $time < 18)
$topcolor = 'pink';
$bottomcolor = 'purple';
if ($time >= 18 && $time < 24)
$topcolor = 'yellow';
$bottomcolor = 'blue';
if ($time >= 24 && $time < 6) // <--- this condition is impossible
$topcolor = 'red';
$bottomcolor = 'green';
正如您所看到的,无论$time
的值是多少,$bottomcolor
的值都会更改为'orange'
,然后更改为'purple'
,依此类推,并且每次最后都是$bottomcolor = 'green';
value是最后一个赋值($time = date('H');
if ($time < 6) {
// night
$topcolor = 'red';
$bottomcolor = 'green';
} elseif ($time < 12) {
// morning
$topcolor = 'black';
$bottomcolor = 'orange';
} elseif ($time < 18) {
// afternoon
$topcolor = 'pink';
$bottomcolor = 'purple';
} else {
// evening
$topcolor = 'yellow';
$bottomcolor = 'blue';
}
)生成的值。
recommended始终对if
,else
,elseif/else
,while
,do-while
,{{ 3}}和for
foreach
,即使它们只包含一个语句。这样,程序员就可以更容易地阅读和理解代码。它对编译器没有任何影响。
回到您的代码,您可以使用control structures语句简化测试:
{{1}}