Nirmal
Nirmal

Reputation: 9549

PHP comparison confusion

// 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?

Upvotes: 3

Views: 89

Answers (1)

Asaph
Asaph

Reputation: 162801

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. 0103 in octal is equal to 67 in decimal. Drop the leading zero and your code should work. See PHP documentation for more details on numeric literals.

Upvotes: 9

Related Questions