所以,我正在尝试编写一个简单的函数,在一天中的特定时间更改背景颜色,但有些东西不能正常工作。
当我运行PHP时,页面上的背景颜色为空白,HTML为background-color: ;
。它没有达到blue
或black
属性,我想知道原因。
有什么想法吗?
PHP:
<?php
function backgroundColor(){
$backgroundColor = '';
if (date('H:i') >= strtotime('06:00') && date('H:i') <= strtotime('20:00')){
$backgroundColor == 'blue';
} else {
$backgroundColor == 'black';
}
return $backgroundColor;
}
?>
HTML:
<html>
<head>
<title></title>
<style>
body{
background-color: <?=backgroundColor()?> ;
}
</style>
</head>
<body>
<?php echo date('H:i')?>
</body>
</html>
答案 0 :(得分:4)
你有两个问题。第一个是你做的检查,如果一个时间(形成一个时间,I.E。10:13)大于/小于一个时间形成的UNIX时间戳。不幸的是,这不会起作用。要解决此问题,您应该使用date()
方法包裹strtotime()
次来电。
第二个问题是您尝试使用多个=
符号设置值。在php中,您可以使用单个=
设置值。多个==
用于检查变量是否具有某个值。请尝试以下修订的代码:
function backgroundColor(){
$backgroundColor = '';
if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <= strtotime('20:00')){
$backgroundColor = 'blue';
} else {
$backgroundColor = 'black';
}
return $backgroundColor;
}
答案 1 :(得分:1)
您需要在date()函数上使用strtotime()函数将两者正确转换为等效函数。
此外,您使用==比较运算符代替= set运算符。
PHP:
<?php
function backgroundColor(){
$backgroundColor = '';
if (strtotime(date('H:i')) >= strtotime('06:00') && strtotime(date('H:i')) <= strtotime('20:00')){
$backgroundColor = 'blue';
} else {
$backgroundColor = 'black';
}
return $backgroundColor;
}
?>
HTML:
<html>
<head>
<title></title>
<style>
body{
background-color: <?php echo backgroundColor();?> ;
}
</style>
</head>
<body>
<?php date('H:i');?>
</body>
</html>
答案 2 :(得分:1)
我想提出这个想法的更大问题。 PHP不是一种时区感知语言,因此如果您对访问者位置没有可靠的洞察力,那么使用服务器端逻辑进行这种类型的主题将会引起很多麻烦。也许我可以使用Javascript建议一个更可靠但尽管完全不同的解决方案。
<script type="text/javascript">
function assignBackgroundColor(){
var d = new Date();
var body = document.body;
if (d.getHours() > 6 && d.getHours() <= 20){
body.style.backgroundColor = "#0000FF"; //blue
}else{
body.style.backgroundColor = "#000000"; //black
}
}
</script>
然后在身体的onload事件中调用它。
<body onload="assignBackgroundColor();">