Saya membaca bahwa isset()
fungsi tersebut memperlakukan string kosong sebagai TRUE
, oleh karena isset()
itu bukan cara yang efektif untuk memvalidasi input teks dan kotak teks dari bentuk HTML.
Jadi, Anda dapat menggunakan empty()
untuk memeriksa bahwa pengguna mengetik sesuatu.
Apakah benar bahwa
isset()
fungsi tersebut memperlakukan string kosong sebagaiTRUE
?Lalu dalam situasi apa yang harus saya gunakan
isset()
? Haruskah saya selalu menggunakan!empty()
untuk memeriksa apakah ada sesuatu?
Misalnya, bukan
if(isset($_GET['gender']))...
Menggunakan ini
if(!empty($_GET['gender']))...
Jawaban:
isset vs.! kosong
FTA:
sumber
empty()
juga mengembalikan nilai true untuk array kosong.empty()
mengembalikan TRUE untuk 0, sebaiknya gunakan operator ini untuk matematika jika "0" adalah string secara tidak sengaja. Ini bisa berbahaya. Sebagai gantinya, gunakan operator dasar>
,<
dan==
dan konversikan variabel menggunakanintval()
ataufloatval()
.Secara umum:
isset
menguji apakah sebuah variabel (atau elemen dari sebuah array, atau properti dari sebuah objek) ada (dan bukan null)empty
menguji jika variabel (...) berisi beberapa data yang tidak kosong.Untuk menjawab pertanyaan 1 :
memberi
Karena variabel itu
$str
ada.Dan pertanyaan 2 :
Anda harus menggunakan isset untuk menentukan apakah suatu variabel ada ; misalnya, jika Anda mendapatkan beberapa data sebagai larik, Anda mungkin perlu memeriksa apakah ada kunci dalam larik itu.
Pikirkan tentang
$_GET
/$_POST
, misalnya.Sekarang, untuk mengerjakan nilainya, ketika Anda tahu ada nilai seperti itu: itulah pekerjaan
empty
.sumber
Tidak ada cara yang baik untuk memeriksa masukan yang valid.
isset()
tidak cukup karena - seperti yang telah dicatat - menganggap string kosong sebagai nilai yang valid.! empty()
juga tidak cukup karena menolak '0', yang mungkin merupakan nilai yang valid.Menggunakan
isset()
gabungan dengan pemeriksaan kesetaraan terhadap string kosong adalah kebutuhan minimum yang Anda perlukan untuk memverifikasi bahwa parameter yang masuk memiliki nilai tanpa membuat negatif palsu:Tapi dengan "minimal", maksud saya persis seperti itu. Semua kode di atas tidak menentukan apakah ada nilai untuk
$_GET['gender']
. Itu tidak menentukan apakah nilai untuk$_GET['gender']
adalah valid (misalnya, salah satu("Male", "Female",
"FileNotFound"
)
).Untuk itu lihat jawaban Josh Davis .
sumber
isset
dimaksudkan untuk digunakan hanya untuk variabel dan bukan hanya nilai, sehinggaisset("foobar")
akan menimbulkan kesalahan. Mulai dari PHP 5.5,empty
mendukung variabel dan ekspresi.Jadi pertanyaan pertama Anda seharusnya adalah jika
isset
mengembalikan nilai true untuk variabel yang memiliki string kosong. Dan jawabannya adalah:The tabel perbandingan jenis dalam manual PHP ini cukup berguna untuk pertanyaan seperti itu.
isset
pada dasarnya memeriksa apakah suatu variabel memiliki nilai selain null karena variabel yang tidak ada selalu memiliki nilai null .empty
adalah jenis counter partisset
tetapi juga memperlakukan nilai integer0
dan nilai string"0"
sebagai kosong. (Sekali lagi, lihat tabel perbandingan tipe .)sumber
empty()
juga "mendukung ekspresi, bukan hanya variabel" mulai dari PHP 5.5.0.Jika Anda memiliki $ _POST ['param'] dan menganggap itu jenis string
identik dengan
sumber
Anda dapat menulis ulang bahwa "isset () bukanlah cara untuk memvalidasi input." Untuk memvalidasi masukan, gunakan ekstensi filter PHP .
filter_has_var()
akan memberi tahu Anda apakah variabel tersebut ada sementarafilter_input()
akan memfilter dan / atau membersihkan masukan.Perhatikan bahwa Anda tidak harus menggunakan
filter_has_var()
beforefilter_input()
dan jika Anda meminta variabel yang tidak disetel,filter_input()
hanya akan kembalinull
.sumber
Kapan dan bagaimana menggunakan:
Benar untuk 0, 1, string kosong, string berisi nilai, benar, salah
False untuk null
misalnya
False untuk 1, string yang berisi nilai, true
Benar untuk nol, string kosong, 0, salah misalnya
sumber
isset digunakan untuk menentukan apakah ada instance dari sesuatu, jika variabel telah dibuat ... itu tidak berkaitan dengan nilai parameter ...
Pascal MARTIN ... +1 ...
kosong () tidak menghasilkan peringatan jika variabel tidak ada ... oleh karena itu, isset () lebih disukai saat menguji keberadaan variabel ketika Anda bermaksud untuk mengubahnya ...
sumber
Menggunakan
empty
sudah cukup:Selain itu, jika Anda menginginkan nilai integer, mungkin juga perlu memeriksanya
intval($variable) !== FALSE
.sumber
empty
...isset
/filter_has_var
harus digunakan untuk memeriksa apakah var ada.sumber
Saya datang ke sini mencari cara cepat untuk memeriksa apakah suatu variabel memiliki konten di dalamnya. Tidak ada jawaban di sini yang memberikan solusi lengkap, jadi ini dia:
Cukup untuk memeriksa apakah masukannya
''
ataunull
, karena:Minta
.../test.php?var=
hasil URL dalam$_GET['var'] = ''
Minta
.../test.php
hasil URL dalam$_GET['var'] = null
isset()
mengembalikanfalse
hanya jika variabel ada dan tidak disetel kenull
, jadi jika Anda menggunakannya, Anda akan mendapatkantrue
string kosong (''
).empty()
menganggap keduanyanull
dan''
kosong, tetapi juga menganggap'0'
kosong, yang merupakan masalah dalam beberapa kasus penggunaan.Jika Anda ingin memperlakukannya
'0'
sebagai kosong, gunakanempty()
. Jika tidak, gunakan cek berikut:$var .'' !== ''
mengevaluasifalse
hanya untuk input berikut:''
null
false
Saya menggunakan pemeriksaan berikut untuk juga menyaring string dengan hanya spasi dan jeda baris:
sumber
Saya menggunakan yang berikut ini untuk menghindari pemberitahuan, ini memeriksa apakah var itu dideklarasikan pada GET atau POST dan dengan awalan @ Anda dapat dengan aman memeriksa apakah tidak kosong dan menghindari pemberitahuan jika var tidak disetel:
sumber
@
) tidak boleh didorong dan tidak perlu untuk cuplikan Anda. Ini bukan jawaban yang bagus. Anda melakukan perbandingan longgar. Anda mungkin juga menggunakan!empty()
.@
akan memberi Anda masalah dengan debugging, dampak halaman lebih lambat dan Anda masih dapat memilikierror_log
lebih dari 1GB dalam satu saat. Jadilah pintar dan gunakan!empty()
,!is_null()
atau sesuatu seperti itu.isset () digunakan untuk memeriksa apakah variabel disetel dengan nilai atau tidak dan Empty () digunakan untuk memeriksa apakah variabel yang diberikan kosong atau tidak.
isset () mengembalikan nilai true ketika variabel tidak null sedangkan Empty () mengembalikan true jika variabel adalah string kosong.
sumber
Sumber: Php.net
sumber
isset () menguji apakah sebuah variabel disetel dan bukan null:
http://us.php.net/manual/en/function.isset.php
kosong () dapat mengembalikan nilai true ketika variabel disetel ke nilai tertentu:
http://us.php.net/manual/en/function.empty.php
sumber
isset () vs empty () vs is_null ()
sumber
! kosong akan berhasil. jika Anda hanya perlu memeriksa data ada atau tidak maka gunakan isset other empty dapat menangani validasi lain
?>
sumber