// today is 03 Jan 2009
$datemonth = (int) date("md");
if($datemonth == 0103){
echo "Match";
} else {
echo "Not a match";
}
I am receiving Not a match as result. Isn’t 0103 equal to 103 when compared as integer? In this situation I can use if($datemonth == 103) for the intended behaviour. But why the logic is failing? A leading zero does not have any value in an integer, right?
When you begin a numeric literal with a leading zero, it means the number is in octal (base 8). You probably meant it to be a decimal (base 10) number.
0103in octal is equal to67in decimal. Drop the leading zero and your code should work. See PHP documentation for more details on numeric literals.