php basit bir problem

4 Cevap
<?php 

$n1=$_POST['mont'];
echo $n1;
if($n1==07)
    echo "numeric";
if($n1=="07")
    echo "string";
if($n1==08)
    echo "numeric";

if($n1=="08")
    echo "string";
?>

in this if $_POST["mont"] is 07 the output is both string and integer but if $_POST["mont"] is 08 the output is only string

ne neden olabilir

4 Cevap

İki nedenleri:

  1. PHP bir sayı içeren bir dize arasında hiçbir fark ve sadece numara var demektir, zayıf-daktilo olduğunu. "5" == 5

  2. 0 ile başlar Numaraları sekizlik olarak kabul edilir. "08" geçerli bir sekizli sayı değil, bu yüzden sadece bir dize olarak kabul edilebilir.

Php tutarlılık harika değil mi? Aynı sorun da JavaScript olur. Başında sıfır ile dize, bir sekizlik (taban-8) sayı olarak döküm, böylece "010" "08" 8 egale, ama olurdu.

(Bunlar aynı miktarda olmasına rağmen) '0 ile önceki herhangi bir sayı 'PHP sekizlik bir sayı olarak okunur, böylece '07', çünkü o gerçekten üssü 8 7 anlamı, 10 tabanına değil. Bu nedenle '08 'bir sekizlik olarak geçersiz kabul edilir ve bir sayı olarak okunamaz.

Sayılar sıfır önde gelen sekizli biçimini gösterir. Sekizli sadece 7'ye kadar gider, bu yüzden 08 geçerli olmaz.