PHP karşılaştırma karışıklık

1 Cevap php
// today is 03 Jan 2009
$datemonth = (int) date("md");

if($datemonth == 0103){
    echo "Match";
} else {
    echo "Not a match";
}

Ben sonuç olarak Not a match alıyorum. Tamsayı olarak karşılaştırıldığında 0103 103 eşit değil midir? Bu durumda, amaçlanan bir davranışı için if($datemonth == 103) kullanabilir. Ama neden mantığı başarısız oluyor? Önde gelen sıfır sağa, bir tamsayı herhangi bir değeri yok?

1 Cevap

Eğer bir lider sıfır ile bir sayısal hazır başladığınızda, bu sayı sekizli (8 tabanı) olduğu anlamına gelir. Muhtemelen bir ondalık (10 tabanı) sayı olması gerekiyordu. 0103 sekizlik 67 onluk eşittir. Önde gelen sıfır bırakın ve kod çalışması gerekir. Daha details on numeric literals için PHP belgelerine bakın.