SORU
6 Ocak 2010, ÇARŞAMBA


Nasıl bir dize bir tamsayı olduğunu kontrol edin, ama bir çift, vb. değil mi?

PHP bir tamsayı bir dize dönüştürmek olacak intval() bir işlevi vardır. Ancak dize eğer yanlış ise kullanıcı için yararlı bir hata iletisi verebilirim, böylece önceden bir tamsayı olduğunu kontrol etmek istiyorum. PHP is_int() ama "2" gibi döndüren bir dize için yanlış vardır.

PHP is_numeric() işlevi vardır, ama eğer sayı çift ise true döndürür. Bir çift için yanlış, ama bir int döndürür true bir şey istiyorum.

örneğin:

my_is_int("2") == TRUE
my_is_int("2.1") == FALSE

CEVAP
6 Ocak 2010, ÇARŞAMBA


Hakkında kullanma ctype_digit?

Manuel:

<?php
$strings = array('1820.20', '10002', 'wsl!12');
foreach ($strings as $testcase) {
    if (ctype_digit($testcase)) {
        echo "The string $testcase consists of all digits.\n";
    } else {
        echo "The string $testcase does not consist of all digits.\n";
    }
}
?>

Yukarıdaki örneğin çıktısı:

The string 1820.20 does not consist of all digits.
The string 10002 consists of all digits.
The string wsl!12 does not consist of all digits.

Bu sadece eğer giriş her zaman bir dize ise çalışır:

$numeric_string = '42';
$integer        = 42;

ctype_digit($numeric_string);  // true
ctype_digit($integer);         // false

Eğer giriş tipi olabilir eğer int is_int ctype_digit birleştirin.

Eğer negatif sayılar değer veriyorsan, o zaman -, ve eğer öyleyse, önceki bir çağrı için giriş kontrol etmeniz gerekir giriş dizesi substr ctype_digit. Böyle bir şey yapardı:

function my_is_int($input) {
  if ($input[0] == '-') {
    return ctype_digit(substr($input, 1));
  }
  return ctype_digit($input);
}

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Lupe Fiasco

    Lupe Fiasco

    23 ŞUBAT 2006
  • Marques Brownlee

    Marques Brow

    21 Mart 2008
  • Michelle Phan

    Michelle Pha

    18 Temmuz 2006