2011-11-29 48 views
8

Benim anlayış ...is_numeric() vs is_float() vs is_int()

sonra is_numeric($input) === true

ya

is_float($input) === true VEYA

is_int($input) === true VEYA

eğer $input === 0 VEYA

$input sayısal bir dizedir (yani tırnak içine alınmamışsa ilk 3'ten birini tatmin eder).

Bu doğru mu? Başka farklılıklar var mı?

+2

Bu tablo içeriğini okuyun: http://php.net/manual/en/language.types.php belki de bu sizin aradığınız şeydir .. –

+0

Sanırım en çok şamandıranlar hakkında kafam karıştı. Yüzen bir şey de sayısal değil ama tam tersi olduğunu kabul ediyorum. – ryanve

cevap

24

Bkz PHP'nin belgelerin çoğu içeren bir pozitif Onaltılık

  • bir dize. İzin verilen her şey hakkında konuşur ve is_float ve is_int'dan daha fazlasıdır.


    O is_int sadece dize gösterimleri izin verilmez anlamına tipi tamsayı olan şeylere çalışıyor dikkat etmek de önemlidir. Bu form girdisi bir tamsayı olduğunu doğrularken yaygın bir sorundur. FILTER_VALIDATE_INT filtresiyle filter_var veya filtre ailesinden bir şey kullanmalısınız. Şamandıralar için FILTER_VALIDATE_FLOAT'u kullanın. Eğer bir tamsayı denetlemek için çalışıyoruz nedeni bir int olarak bir parametre doğrulamak için ise


    Ayrıca, daha sonra PHP 7'de bunu yapabilirsiniz:

    function foo(int $i) { 
        // $i is guaranteed to be an int (is_int) will be true 
    } 
    

    PHP 7 ikisini vardır int'ye dönüştürmek için farklı modlar; this answer bunu biraz daha açıklıyor.

    Bu, form öğesinin içeriğini doğrularsanız, muhtemelen sizin istediğinizi değil. Bunun için filter_var çözümünü kullanın.

  • +0

    Thx - 'filter_var' hakkında iyi bir ipucu – ryanve

    +0

    bir işleve ihtiyacınız yoktur, bir tamsayıya çevirebilirsiniz:' $ n = (int) $ i' –

    2

    docs'a bakın. Sayısal bir değer olabilir:

    • bir tamsayı
    • bir şamandıra
    • Üstel
    • is_numeric bu
    +0

    Thx // Üstel gösterim floatlarda bulunur. Altıgenler hakkında haklısınız - öyle değil gibi görünüyor ve is_hex işlevi yok. – ryanve

    +0

    @ryanve PHP için, ama normalde Exponential (bilimsel) bir float düşünmezdim. – fncomp

    İlgili konular