Semak sama ada rentetan PHP hanya terdiri daripada integer
P粉788765679
P粉788765679 2023-09-21 21:52:44
0
2
645

Saya sedang menulis kod PHP untuk mengesahkan beberapa data yang dimasukkan oleh pengguna, salah satunya ialah integer, yang kembali benar apabila saya menggunakan $_REQUEST["age"]来获取它,当我用gettype($_REQUEST["age"]) == "integer"is_int($_REQUEST["age"])检查这个值是否为整数时,两者都返回false,但是当我使用is_numeric($_REQUEST["age"]). Saya ingin menyemak sama ada nilai parameter ialah integer, adakah saya menggunakan dua fungsi pertama dengan betul atau adakah saya kehilangan sesuatu?

Terima kasih

Nota: Saya cuba keluarkan gettype($_REQUEST["age"]),它给我返回string

P粉788765679
P粉788765679

membalas semua(2)
P粉293550575
<?
     if(intval($_REQUEST["age"]) > 0):
        echo '整数';
     else:
        echo '其他';
     endif;
?>
P粉107772015

Versi pendek:

Gunakan ctype_digit($_REQUEST['age'])

Versi terperinci:

Masalah anda ialah apabila anda menggunakan gettype时,$_REQUEST返回一个字符串。即使该字符串在语义上是一个整数,比如16, ia masih pembolehubah jenis rentetan, bukan pembolehubah jenis integer. Sebab anda mendapat keputusan yang berbeza daripada dua ujian ini adalah kerana mereka menguji perkara yang berbeza:

  • is_numeric测试一个字符串是否包含一个"可选符号、任意数量的数字、可选的小数部分和可选的指数部分",根据PHP文档。在你的情况下,该字符串只包含数字,所以测试返回True.
  • is_int测试变量的类型是否为整数 - 但它不会是整数,因为它是由$_REQUESTDipulangkan.

Sebab itu is_numeric返回Trueis_int返回False的原因:该字符串只包含数字(所以是"numeric"),但在技术上仍然是一个字符串类型,而不是整数类型(所以不是"int")。当然,is_numeric对于整数测试来说是不够的,因为如果字符串有小数或使用科学计数法,它将返回True, ialah nombor tetapi bukan integer.

Untuk menguji sama ada $_REQUEST ialah integer, tanpa mengira jenis teknikal, anda boleh menguji sama ada semua aksara dalam rentetan ialah nombor (dan oleh itu keseluruhan rentetan ialah integer). Untuk ini anda boleh menggunakan ctype_digit:

ctype_digit($_REQUEST['age'])

Ini akan berfungsi untuk 16返回True,但对16.516e0不返回True - Ini akan membolehkan anda menapis integer daripada nombor bukan integer.

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan