为什么03不大于00?

时间:2014-10-01 10:08:28

标签: php

有了这个IF声明:

 if ( (date('i')>=00) && (date('i')<=19) ) {
     $a=1;
 }

 if ( (date('i')>=20) && (date('i')<=39) ) {
     $a=2;
 }

 if ( (date('i')>=40) && (date('i')<=59) ) {
     $a=3;
 } else {
     $a=0;
 }

date('i')例如为“03”时,我收到a=0而不是a=1

不应该认为03大于00?

实现我想要的最佳方式是什么?

2 个答案:

答案 0 :(得分:3)

它与变量类型无关。

最后一个if语句使你的前两个不相关。 $a只会是30。您需要else if

另外,将date('i')分配给变量以避免不断调用它。

$d = date('i');

if ($d >= 00 && $d <= 19) {
    $a = 1;
}
else if ($d >= 20 && $d <= 39) {
    $a = 2;
}
else if ($d >= 40 && $d <= 59) {
    $a = 3;
} else {
    $a = 0;
}

或者,为了使事情更整洁:

$d = date('i');
$a = 0;

if($d >= 00) $a = 1;
if($d >= 20) $a = 2;
if($d >= 40) $a = 3;

答案 1 :(得分:0)

在PHP中,函数date()返回一个字符串,因此将date与integer进行比较的最佳方法是进行转换。 尝试使用此语法:if((int)date('i') > 0 && (int)date('i') <= 19) { $a = 1; }

最诚挚的问候, 茴香