2014-10-01 34 views
0

有了這個IF語句:爲什麼03不是00大於?

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大嗎?

什麼是最好的方式來實現我想在這裏?

+3

你比較字符串爲整數。 – 2014-10-01 10:09:23

+0

@ʰᵈˑ我在這裏工作時間不是在這個月的某一天...... – rockyraw 2014-10-01 10:10:58

+0

只是施放它:'(int)date('i')' – Joe 2014-10-01 10:11:19

回答

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; 
+2

一個很好的發現。 PHP自動將數字字符串轉換爲整數以進行比較,所以他的類型很好。 Well spotted :-) – Joe 2014-10-01 10:16:08

+0

OMG。我遠離PHP :) – 2014-10-01 10:17:37

+0

太好了,謝謝。 – rockyraw 2014-10-01 10:46:46

0

在PHP中,函數date()返回一個字符串,因此將日期與整數進行比較的最好方法是進行轉換。 嘗試用這種syntaxe:if((int)date('i') > 0 && (int)date('i') <= 19) { $a = 1; }

最好的問候, 阿尼斯

相關問題