Hi Mudguard,
date("d", $date) liefert einen String mit 2 Ziffern (die erste ist ggf. ne 0).
02 ist die Oktaldarstellung der Zahl 2.
Wenn Du einen String mit einer Zahl (in Deinem Fall 2) vergleichst, wird die Zahl in einen String umgewandelt, aus der Zahl 2 wird der String "2".
das stimmt so nicht, das Gegenteil ist der Fall: der (numerische) String wird zu einer Zahl konvertiert. Siehe auch PHP: Comparison Operators, wo es heißt: "If you compare an integer with a string, the string is converted to a number. If you compare two numerical strings, they are compared as integers.". Z.B.:
ag@bart:~$ php -r 'var_dump("02" == 02);'
bool(true)
Darüber hinaus ist dein Hinweis, dass 02 eine Oktalschreibweise ist, richtig und insbesondere wichtig für den OP, da dadurch z.B. bei Tag 8 auch die automatische Konvertierung des Strings nicht mehr weiterhilft:
ag@bart:~$ php -r 'var_dump("08" == 08);'
bool(false)
Gruß,
Andreas.