Php 基于时间的梯度背景
尝试根据php时间获得要显示的正确渐变颜色。当我尝试时,渐变不匹配,即第一个小时块的topcolor和第四个小时块的bottomcolor一起匹配Php 基于时间的梯度背景,php,Php,尝试根据php时间获得要显示的正确渐变颜色。当我尝试时,渐变不匹配,即第一个小时块的topcolor和第四个小时块的bottomcolor一起匹配 <?php $time = date("H"); if( $time >= 06 && $time < 12 ) $topcolor = 'black'; $bottomcolor = 'orange'; if( $time >= 12 && $time < 18 ) $topcolo
<?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>
您需要将每个if条件后面的语句用大括号括起来:
if( $time >= 06 && $time < 12 )
$topcolor = 'black';
$bottomcolor = 'orange';
->
如果省略这些,则只计算第一条语句。看
最后一个$bottomcolor生效的原因是,不管$time值是多少,该变量的所有赋值都在运行,并且最后一个赋值优先。从an if语句中可以看出:
if (expression)
statement
关于:
语句可以是赋值、函数调用、循环、条件语句,甚至是不执行空语句的语句。语句通常以分号结尾。此外,通过用大括号封装一组语句,可以将语句分组到一个语句组中。语句组本身也是一个语句
根据我们刚刚获得的新智慧,您的代码与此相同,缩进并不重要,它只是为了美观:
$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';
您需要使用大括号*来包含条件块。如果{code}。如果你还有其他一些问题,那么你也应该考虑使用else。没有任何东西会小于6而大于24。当06==6时,您不应该养成在整数上加0前缀的习惯,因为016==14,在加0前缀时使用的是八进制。将06改为6,最后一个if中的24改为0。还为每个条件添加了括号。您认为代码可以很好地处理这些更改吗?我担心from=0的切换——后台切换是否会消失?好吧,您可以稍微干涸一下代码,使用else if和else,而不是4个单独的if条件,但是如果它工作,那么它就工作了……我想知道当$time<6&&24时,一天中的哪一部分时间是这样的
$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 = 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';
}