Apakah ada perbedaan antara issetdan !empty. Jika saya melakukan pemeriksaan boolean ganda ini, apakah benar seperti ini atau mubazir? dan adakah cara yang lebih pendek untuk melakukan hal yang sama?
Komplemen yang tepat jelas adalah isset dan is_null, tetapi! Blank mencakup beberapa yang berbeda. Itu semua tergantung pada jenis data yang Anda uji.
Jeff Clayton
Jawaban:
420
Ini sepenuhnya berlebihan. emptylebih atau kurang singkatan !isset($foo) || !$foo, dan !emptyanalog dengan isset($foo) && $foo. Yaitu emptymelakukan hal sebaliknya issetditambah pemeriksaan tambahan untuk kebenaran suatu nilai.
Atau dengan kata lain, emptysama dengan !$foo, tetapi tidak memberikan peringatan jika variabel tidak ada. Itulah poin utama dari fungsi ini: melakukan perbandingan boolean tanpa khawatir tentang variabel yang ditetapkan.
Tapi kalau tidak, $vars[1]dia akan mendapat pemberitahuan.
karim79
6
Saya tidak tahu dari mana saya mendapatkan ide itu. Ditambah satu.
karim79
8
@karim IMO emptyadalah salah satu fungsi yang paling disalahpahami dalam PHP. Cuplikan kecil tentang "tidak ada peringatan yang dihasilkan" sangat mudah untuk diabaikan. Saya harus memindai dokumentasi sendiri beberapa kali untuk menemukannya agar dikirim di sini.
deceze
2
empty($vars[1])tidak menyebabkan peringatan apa pun meski $vars[1]tidak diatur, tetapi echo $vars[1]akan. Saya memeriksa fakta menggunakan echo $vars[1]; if (!empty($vars[1])) echo 1; else echo 0;.
Amil Waduwawara
4
@ Shahor Banyak bahasa menganggap 0sebagai false. PHP bukan satu-satunya. Masih tidak yakin apa keluhan Anda.
deceze
33
isset() menguji apakah suatu variabel disetel dan bukan nol:
Jawaban yang diterima sama sekali tidak menunjukkan bahwa issetitu setara dengan !empty.
tipuan
8
$a =0;if(isset($a)){//$a is set because it has some value ,eg:0
echo '$a has value';}if(!empty($a)){//$a is empty because it has value 0
echo '$a is not empty';}else{
echo '$a is empty';}
Tapi Anda belum menangani variabel tidak mengatur kasus.
Amil Waduwawara
3
Empty just check adalah variabel / array yang direferensikan memiliki nilai jika Anda memeriksa php doc (kosong) Anda akan melihat hal-hal ini dianggap emtpy
*""(an empty string)*0(0as an integer)*"0"(0as a string)* NULL* FALSE* array()(an empty array)*var $var;(a variable declared, but without a valuein a class)
sementara isset memeriksa apakah variabel mengeluarkan dan bukan null yang juga dapat ditemukan di php doc (isset)
Ini tidak pernah diperlukan pada versi PHP apa pun, karena kosong sudah memeriksa (tidak) menerbitkan. Anda membingungkan fakta bahwa kosong sekarang mendukung ekspresi dengan pertanyaan.
alxgb
Itu benar, lima tahun kemudian.
Lennon
2
isset($vars[1]) AND !empty($vars[1])setara dengan !empty($vars[1]).
Saya menyiapkan kode sederhana untuk menunjukkannya secara empiris.
Baris terakhir adalah variabel yang tidak ditentukan.
"Kosong": hanya berfungsi pada variabel. Kosong dapat berarti hal yang berbeda untuk tipe variabel yang berbeda (periksa manual: http://php.net/manual/en/function.empty.php ).
"isset": memeriksa apakah variabel ada dan memeriksa NULL yang benar atau nilai yang salah. Dapat tidak disetel dengan memanggil "tidak disetel". Sekali lagi, periksa manualnya.
Penggunaan salah satu dari itu tergantung pada jenis variabel yang Anda gunakan.
Saya akan mengatakan, lebih aman untuk memeriksa keduanya, karena Anda pertama-tama memeriksa apakah variabelnya ada, dan jika tidak benar-benar NULL atau kosong.
@szahn "lebih aman untuk memeriksa keduanya", - Anda sebagai programmer dapat memeriksa semua yang Anda inginkan untuk keamanannya. Tetapi jika kode Anda berlebihan maka Anda bisa menjadi redundan sebagai programmer.
madlopt
0
jika kita menggunakan halaman yang sama untuk menambah / mengedit via tombol kirim seperti di bawah ini
posting sebelumnya dikirim karena saya tekan enter karena kesalahan, inilah jawaban lengkap saya ... mengapa downvote? :(
diEcho
0
Dari situs web PHP, merujuk pada empty()fungsinya:
Mengembalikan FALSEjika varmemiliki nilai yang tidak kosong dan tidak nol.
Itu hal yang baik untuk diketahui. Dengan kata lain, semuanya mulai dari NULL, 0hingga "" akan kembali TRUEsaat menggunakan empty()fungsi.
Berikut adalah deskripsi isset()fungsi yang dikembalikan:
Pengembalian TRUEjika varada; FALSEjika tidak.
Dengan kata lain, hanya variabel yang tidak ada (atau, variabel dengan NULLnilai ketat ) akan kembali FALSEpada isset()fungsi. Semua variabel yang memiliki jenis nilai apa pun, apakah itu 0, string teks kosong, dll. Akan kembali TRUE.
Jawaban:
Ini sepenuhnya berlebihan.
empty
lebih atau kurang singkatan!isset($foo) || !$foo
, dan!empty
analog denganisset($foo) && $foo
. Yaituempty
melakukan hal sebaliknyaisset
ditambah pemeriksaan tambahan untuk kebenaran suatu nilai.Atau dengan kata lain,
empty
sama dengan!$foo
, tetapi tidak memberikan peringatan jika variabel tidak ada. Itulah poin utama dari fungsi ini: melakukan perbandingan boolean tanpa khawatir tentang variabel yang ditetapkan.Manual menempatkannya seperti ini:
Anda cukup menggunakan di
!empty($vars[1])
sini.sumber
$vars[1]
dia akan mendapat pemberitahuan.empty
adalah salah satu fungsi yang paling disalahpahami dalam PHP. Cuplikan kecil tentang "tidak ada peringatan yang dihasilkan" sangat mudah untuk diabaikan. Saya harus memindai dokumentasi sendiri beberapa kali untuk menemukannya agar dikirim di sini.empty($vars[1])
tidak menyebabkan peringatan apa pun meski$vars[1]
tidak diatur, tetapiecho $vars[1]
akan. Saya memeriksa fakta menggunakanecho $vars[1]; if (!empty($vars[1])) echo 1; else echo 0;
.0
sebagaifalse
. PHP bukan satu-satunya. Masih tidak yakin apa keluhan Anda.isset()
menguji apakah suatu variabel disetel dan bukan nol:http://us.php.net/manual/en/function.isset.php
empty()
dapat mengembalikan true ketika variabel diatur ke nilai-nilai tertentu:http://us.php.net/manual/en/function.empty.php
Untuk mendemonstrasikan ini, coba kode berikut dengan $ the_var tidak ditetapkan, atur ke 0, dan atur ke 1.
sumber
Jawaban yang diterima tidak benar.
isset () TIDAK setara dengan! empty ().
Anda akan membuat beberapa bug yang agak tidak menyenangkan dan sulit untuk di-debug jika Anda melewati rute ini. mis. coba jalankan kode ini:
https://3v4l.org/J4nBb
sumber
isset
itu setara dengan!empty
.sumber
Empty just check adalah variabel / array yang direferensikan memiliki nilai jika Anda memeriksa php doc (kosong) Anda akan melihat hal-hal ini dianggap emtpy
sementara isset memeriksa apakah variabel mengeluarkan dan bukan null yang juga dapat ditemukan di php doc (isset)
sumber
Itu tidak perlu.
php.net
sumber
isset($vars[1]) AND !empty($vars[1])
setara dengan!empty($vars[1])
.Saya menyiapkan kode sederhana untuk menunjukkannya secara empiris.
Baris terakhir adalah variabel yang tidak ditentukan.
Dan kode
Variabel yang tidak terdefinisi harus dievaluasi fungsi luar, karena fungsi itu sendiri membuat variabel sementara dalam lingkup itu sendiri.
sumber
"Kosong": hanya berfungsi pada variabel. Kosong dapat berarti hal yang berbeda untuk tipe variabel yang berbeda (periksa manual: http://php.net/manual/en/function.empty.php ).
"isset": memeriksa apakah variabel ada dan memeriksa NULL yang benar atau nilai yang salah. Dapat tidak disetel dengan memanggil "tidak disetel". Sekali lagi, periksa manualnya.
Penggunaan salah satu dari itu tergantung pada jenis variabel yang Anda gunakan.
Saya akan mengatakan, lebih aman untuk memeriksa keduanya, karena Anda pertama-tama memeriksa apakah variabelnya ada, dan jika tidak benar-benar NULL atau kosong.
sumber
jika kita menggunakan halaman yang sama untuk menambah / mengedit via tombol kirim seperti di bawah ini
maka kita seharusnya tidak menggunakan
bcoz
edit_id
disetel sepanjang waktu apakah itu menambah atau mengedit halaman, sebagai gantinya kita harus menggunakan kondisi cek di bawah inisumber
empty()
fungsinya:Mengembalikan
FALSE
jikavar
memiliki nilai yang tidak kosong dan tidak nol.Itu hal yang baik untuk diketahui. Dengan kata lain, semuanya mulai dari
NULL
,0
hingga "" akan kembaliTRUE
saat menggunakanempty()
fungsi.isset()
fungsi yang dikembalikan:Pengembalian
TRUE
jikavar
ada;FALSE
jika tidak.Dengan kata lain, hanya variabel yang tidak ada (atau, variabel dengan
NULL
nilai ketat ) akan kembaliFALSE
padaisset()
fungsi. Semua variabel yang memiliki jenis nilai apa pun, apakah itu0
, string teks kosong, dll. Akan kembaliTRUE
.sumber