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?
isset($vars[1]) AND !empty($vars[1])
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?
isset($vars[1]) AND !empty($vars[1])
Jawaban:
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.
Manual menempatkannya seperti ini:
empty()adalah kebalikan dari(boolean) var, kecuali bahwa tidak ada peringatan yang dihasilkan ketika variabel tidak disetel.
Anda cukup menggunakan di !empty($vars[1])sini.
$vars[1]dia akan mendapat pemberitahuan.
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.
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;.
0sebagai false. 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.
<?php
#$the_var = 0;
if (isset($the_var)) {
echo "set";
} else {
echo "not set";
}
echo "\n";
if (empty($the_var)) {
echo "empty";
} else {
echo "not empty";
}
?>
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:
<?php
$s = '';
print "isset: '" . isset($s) . "'. ";
print "!empty: '" . !empty($s) . "'";
?>
issetitu setara dengan !empty.
$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';
}
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 (0 as an integer) * "0" (0 as a string) * NULL * FALSE * array() (an empty array) * var $var; (a variable declared, but without a value in a class)
sementara isset memeriksa apakah variabel mengeluarkan dan bukan null yang juga dapat ditemukan di php doc (isset)
Itu tidak perlu.
Tidak ada peringatan yang dihasilkan jika variabel tidak ada. Itu berarti kosong () pada dasarnya setara dengan! Isset ($ var) || $ var == false
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.
+-----------+---------+---------+----------+---------------------+
| Var value | empty() | isset() | !empty() | isset() && !empty() |
+-----------+---------+---------+----------+---------------------+
| '' | true | true | false | false |
| ' ' | false | true | true | true |
| false | true | true | false | false |
| true | false | true | true | true |
| array () | true | true | false | false |
| NULL | true | false | false | false |
| '0' | true | true | false | false |
| 0 | true | true | false | false |
| 0.0 | true | true | false | false |
| undefined | true | false | false | false |
+-----------+---------+---------+----------+---------------------+
Dan kode
$var1 = "";
$var2 = " ";
$var3 = FALSE;
$var4 = TRUE;
$var5 = array();
$var6 = null;
$var7 = "0";
$var8 = 0;
$var9 = 0.0;
function compare($var)
{
print(var_export($var, true) . "|" .
var_export(empty($var), true) . "|" .
var_export(isset($var), true) . "|" .
var_export(!empty($var), true) . "|" .
var_export(isset($var) && !empty($var), true) . "\n");
}
for ($i = 1; $i <= 9; $i++) {
$var = 'var' . $i;
compare($$var);
}
@print(var_export($var10, true) . "|" .
var_export(empty($var10), true) . "|" .
var_export(isset($var10), true) . "|" .
var_export(!empty($var10), true) . "|" .
var_export(isset($var10) && !empty($var10), true) . "\n");
Variabel yang tidak terdefinisi harus dievaluasi fungsi luar, karena fungsi itu sendiri membuat variabel sementara dalam lingkup itu sendiri.
"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.
jika kita menggunakan halaman yang sama untuk menambah / mengedit via tombol kirim seperti di bawah ini
<input type="hidden" value="<?echo $_GET['edit_id'];?>" name="edit_id">
maka kita seharusnya tidak menggunakan
isset($_POST['edit_id'])
bcoz edit_iddisetel sepanjang waktu apakah itu menambah atau mengedit halaman, sebagai gantinya kita harus menggunakan kondisi cek di bawah ini
!empty($_POST['edit_id'])
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.
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.