Kode akan menjelaskan lebih lanjut:
$var = 0;
if (!empty($var)){
echo "Its not empty";
} else {
echo "Its empty";
}
Hasilnya mengembalikan "Ini kosong". Saya pikir kosong () akan memeriksa apakah saya sudah menetapkan variabel dan memiliki nilai di dalamnya. Mengapa mengembalikan "Kosong" ??
empty
mungkin adalah fungsi PHP yang paling berguna namun banyak disalahpahami. Pelajari bagaimana dan kapan menggunakannya.empty
pada dasarnya adalah kependekan dariisset($var) && $var != false
. Anda harus memegangempty
sangat aneh untuk menembak diri sendiri dengan ini. ; Pfalse
tanpa memicu kesalahan "variabel tidak terdefinisi" tidak berguna? Oh well, tebak Anda tidak pernah melakukan ini ... 3) Memilih fungsi yang salah dalam konteks keamanan tidak berarti fungsi itu sendiri buruk, tidak berguna atau tidak konsisten; itu hanya berarti seseorang memilih fungsi yang salah untuk pekerjaan itu.empty()
, maka itu mungkin memiliki nama yang salah.Jawaban:
http://php.net/empty
Perhatikan bahwa daftar ini persis sama dengan paksaan untuk Boolean
false
.empty
sederhana!isset($var) || !$var
. Cobaisset
saja.sumber
!empty($var)
, tetapi perhatikan bahwa itu tidak sama dengan apa yang Anda tulis dalam pertanyaan. Apa yang harus digunakan sepenuhnya tergantung pada nilai apa yang ingin Anda anggap sebagaitrue
. Bandingkan saja perbedaan antaraisset
danempty
dan pilih kombinasi yang tepat untuk situasi yang tepat.isset
mengembalikanTrue
if$var=0
. Tetapi yang Anda maksudif(isset($var) && $var != 0)
adalah sama denganempty
'0'
diperlakukan sebagai setara dengan0
. Itu filosofi desain inti dari PHP. Saya setuju bahwa ini adalah pilihan yang sangat bisa diperdebatkan, namun, saya di sini bukan untuk memperdebatkan pilihan itu dengan Anda. Dalam logika PHP,empty
setara dengan== false
pemberitahuan minus adalah IMO baik-baik saja. Bahwa beberapa hal harus sangat berbeda dalam PHP daripada yang ada adalah topik yang berbeda.Saya bertanya-tanya mengapa tidak ada yang menyarankan tabel perbandingan Jenis yang sangat berguna . Ini menjawab setiap pertanyaan tentang fungsi umum dan membandingkan operator.
Cuplikan:
Bersama lembar contekan lainnya, saya selalu menyimpan hardcopy dari meja ini di meja saya jika saya tidak yakin
sumber
Dalam hal nilai numerik Anda harus menggunakan fungsi is_numeric:
sumber
Gunakan
strlen()
sebagai gantinya. Saya berlari ke masalah yang sama menggunakan 1/0 sebagai nilai yang mungkin untuk beberapa variabel. Saya menggunakanif (strlen($_POST['myValue']) == 0)
untuk menguji apakah ada karakter atau tidak dalam variabel saya.sumber
@strlen
. Selama Anda melewati sebuah variabel, ia seharusnya tidak menghasilkan kesalahan. Jika strlen Anda kosong, ia akan mencatat nilai 0.Saya baru-baru ini tertangkap dengan celana saya yang satu ini juga. Masalah yang sering kita hadapi adalah variabel yang tidak disetel - misalnya elemen bentuk yang mungkin atau mungkin tidak ada di sana, tetapi untuk banyak elemen,
0
(atau string'0'
yang akan melalui pos lebih akurat, tetapi masih akan dievaluasi sebagai "falsey" ) adalah nilai yang sah yang dikatakan pada daftar dropdown.menggunakan
empty()
pertama dan kemudianstrlen()
adalah yang terbaik jika Anda membutuhkan ini juga, seperti:sumber
Dari sudut pandang linguistik kosong memiliki makna tanpa nilai . Seperti yang lain, Anda harus menggunakan
isset()
untuk memeriksa apakah suatu variabel telah ditentukan, yang merupakan apa yang Anda lakukan.sumber
0
versusnull
dengan mudah. Terima kasih!empty()
mengembalikan true untuk semua yang mengevaluasiFALSE
, itu sebenarnya 'tidak' (!
) yang menyamar. Saya pikir Anda maksudisset()
sumber
Untuk menerima 0 sebagai nilai dalam penggunaan variabel
isset
Periksa apakah variabel kosong
Periksa apakah variabel diatur
sumber
Ini bekerja untuk saya!
sumber
Hal-hal berikut dianggap kosong:
Dari Manual PHP
Dalam kasus Anda
$var
adalah0
, sehinggaempty($var)
akan kembalitrue
, Anda meniadakan hasil sebelum pengujian itu, sehingga blok lain akan menjalankan memberikan "Its empty
" sebagai output.sumber
Dari manual: Mengembalikan FALSE jika var memiliki nilai yang tidak kosong dan tidak nol.
Hal-hal berikut dianggap kosong:
Lebih lanjut: http://php.net/manual/en/function.empty.php
sumber
Dalam kasus saya, kode ini berfungsi.
sumber
Sebenarnya isset hanya memeriksa apakah set variabel atau tidak. Dalam hal ini jika Anda ingin memeriksa apakah variabel Anda benar-benar nol atau kosong Anda dapat menggunakan contoh ini:
hanya untuk pemberitahuan $ myVar == 0 bertindak seperti fungsi kosong.
sumber
kosong berarti kosong .. apa pun kata tipu.
Kapan saya melakukannya
Saya berharap itu
var_dump(empty($var));
akan kembali salah.jika Anda memeriksa hal-hal dalam array Anda harus selalu melakukannya
isset($var)
terlebih dahulu.sumber
gunakan saja
($_POST['input_field_name'])!=0
alih-alih!($_POST['input_field_name'])==0
maka 0 tidak diperlakukan sebagai kosong.sumber
Tidak yakin apakah masih ada orang yang mencari penjelasan dan solusi. Komentar di atas mengatakan semuanya tentang perbedaan antara BENAR / SALAH / 1 / 0.
Saya hanya ingin membawa 2 sen saya untuk cara menampilkan nilai aktual.
BOOLEAN
Jika Anda bekerja dengan tipe data Boolean, Anda mencari hasil TRUE vs FALSE; jika Anda menyimpannya di MySQL, itu akan disimpan sebagai 1 resp. 0 (jika saya tidak salah, ini sama dengan memori server Anda).
Jadi untuk menampilkan nilai dalam PHP, Anda perlu memeriksa apakah itu benar (1) atau salah (0) dan menampilkan apa pun yang Anda inginkan: "TRUE" atau "FALSE" atau mungkin "1" atau "0".
Perhatian, semua yang lebih besar (atau berbeda) dari 0 juga akan dianggap sebagai TRUE di PHP. Misalnya: 2, "abc", dll. Semua akan mengembalikan BENAR.
BIT, TINYINT
Jika Anda bekerja dengan tipe data nomor, cara itu disimpan adalah sama.
Untuk menampilkan nilai, Anda harus memberi tahu PHP untuk menanganinya sebagai angka. Cara termudah yang saya temukan adalah mengalikannya dengan 1.
sumber
contoh yang tepat. buat saja bidang tipe int (contoh nomor ponsel) di dalam basis data dan kirimkan nilai kosong untuk basis data berikut melalui formulir atau cukup masukkan menggunakan SQL. apa yang akan disimpan dalam database 0 karena tipe int dan tidak dapat disimpan sebagai kosong atau nol. karena itu kosong tetapi akan disimpan sebagai 0. jadi ketika Anda mengambil data melalui PHP dan memeriksa nilai-nilai kosong. ini sangat berguna dan secara logis benar.
0,00, 0,000, 0,0000 .... 0,0 ... 0 juga kosong dan contoh di atas juga dapat digunakan untuk menyimpan berbagai jenis nilai dalam database seperti float, double, desimal (desimal memiliki varian berbeda seperti 0,000 dan seterusnya.
sumber
Anda perlu menggunakan isset () untuk memeriksa apakah nilainya diatur.
sumber