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"]
來(lái)獲取它,當(dāng)我用gettype($_REQUEST["age"]) == "integer"
和is_int($_REQUEST["age"])
檢查這個(gè)值是否為整數(shù)時(shí),兩者都返回false,但是當(dāng)我使用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
<? if(intval($_REQUEST["age"]) > 0): echo '整數(shù)'; else: echo '其他'; endif; ?>
Versi pendek:
Gunakan ctype_digit($_REQUEST['age'])
Versi terperinci:
Masalah anda ialah apabila anda menggunakan gettype
時(shí),$_REQUEST
返回一個(gè)字符串。即使該字符串在語(yǔ)義上是一個(gè)整數(shù),比如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
測(cè)試一個(gè)字符串是否包含一個(gè)"可選符號(hào)、任意數(shù)量的數(shù)字、可選的小數(shù)部分和可選的指數(shù)部分",根據(jù)PHP文檔。在你的情況下,該字符串只包含數(shù)字,所以測(cè)試返回True
. is_int
測(cè)試變量的類型是否為整數(shù) - 但它不會(huì)是整數(shù),因?yàn)樗怯?code>$_REQUESTDipulangkan. Sebab itu is_numeric
返回True
而is_int
返回False
的原因:該字符串只包含數(shù)字(所以是"numeric"),但在技術(shù)上仍然是一個(gè)字符串類型,而不是整數(shù)類型(所以不是"int")。當(dāng)然,is_numeric
對(duì)于整數(shù)測(cè)試來(lái)說(shuō)是不夠的,因?yàn)槿绻址行?shù)或使用科學(xué)計(jì)數(shù)法,它將返回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
,但對(duì)16.5
或16e0
不返回True
- Ini akan membolehkan anda menapis integer daripada nombor bukan integer.