Rumah > Artikel > pembangunan bahagian belakang > Bandingkan fungsi isset(), kosong() dan is_null() PHP
Anda akan menggunakan pembolehubah dalam hampir setiap program yang ditulis dalam PHP. Selalunya pembolehubah ini mempunyai nilai, dan kami biasanya menciptanya dengan nilai awal. Walau bagaimanapun, sentiasa ada kemungkinan beberapa pembolehubah yang anda gunakan tidak dimulakan. Ini boleh menyebabkan PHP mengeluarkan amaran tentang penggunaan pembolehubah tidak ditentukan.
Terdapat banyak sebab untuk pembolehubah yang tidak ditentukan. Masalah yang paling biasa ialah anda sebenarnya tidak mentakrifkan pembolehubah, atau anda membuat kesilapan apabila menggunakannya semula di tempat lain. Ini hanyalah ralat pengaturcaraan. Walau bagaimanapun, satu lagi kemungkinan yang boleh mengakibatkan pembolehubah tidak ditentukan ialah ia ditakrifkan secara bersyarat.
Anda juga mungkin mendapati bahawa nilai pembolehubah ialah NULL
. Ini boleh berlaku atas pelbagai sebab. Sebagai contoh, pembolehubah mungkin tidak dimulakan dengan nilai. Atau fungsi mungkin mengembalikan null untuk menunjukkan beberapa jenis ralat. NULL
。发生这种情况的原因有多种。例如,变量可能只是尚未用值初始化。或者函数可能会返回空值来表示某种错误。
无论如何,在定义变量之前或当变量具有空值时使用变量可能会产生意想不到的后果。在本教程中,我将向您展示如何检查元素是否已定义并查看它是否为空或 null。
您可以使用 isset()
、empty()
或 is_null()
来检查其中一个或所有条件是否为真或假。
让我们开始一些定义。
isset()
:您可以使用 isset()
来确定变量是否已声明并且与 null
不同。empty()
:用于判断变量是否存在且变量的值不等于 false
。is_null()
:该函数用于检查变量是否为 null
。isset()
与 empty()
正如我们从定义中看到的,如果我们之前定义了该变量并将其值设置为 NULL
以外的值,则 isset()
将返回 true
。这可以包括 0
、空字符串或 false
。另一方面,每当变量值设置为计算结果为 false
时,empty()
将返回 true
— 我们称这些为“假”值。 falsey 值的示例包括 0
、空字符串 ""
和字符串 "0"
、空数组、NULL
,或者当然是布尔值 false
。
isset()
和 empty()
之间的一个相似之处是它们都是语言结构,因此不能使用变量函数进行调用。
下面的代码片段应该解释这两者之间的区别。
<?php $fruit = ''; if(isset($fruit)) { echo 'Do you like '.$fruit.'?'; } // Output: Do you like ? if(!empty($fruit)) { echo 'Do you like '.$fruit.'?'; } // No Output ?>
请注意,empty()
可以使用 isset()
函数编写:
<?php function my_empty($x) { return !isset($x) || $x == false } ?>
当然,通常使用内置的 empty()
函数会更容易。
isset()
与 is_null()
如果变量的值已显式设置为 NULL
,则 is_null()
函数将返回 true
。否则,它只是返回 false
。另一方面,只要定义了变量并且其值不为 NULL
,isset()
就会返回 true
。
这是一个基本示例来显示它们之间的差异。
<?php $fruit = NULL; if(isset($fruit)) { echo 'Do you like '.$fruit.'?'; } // No Output if(is_null($fruit)) { echo 'There is no fruit.'; } // Output: There is no fruit. ?>
empty()
与 is_null()
如果变量的值计算结果为 false
,则 empty()
函数将返回 true
。这可能意味着空字符串、NULL
、整数 0
或没有元素的数组。另一方面,仅当变量的值为 NULL
时,is_null()
才会返回 true
。
这是一个基本示例来显示它们之间的差异。
<?php $person = ['first_name' => 'Monty', 'last_name' => '', 'age' => '83', 'fav_movie' => NULL]; if(empty($person['last_name'])) { if(is_null($person['last_name'])) { echo 'The last name is set to NULL.'; } else { echo 'The last name is probably an empty string.'; } } // Output: The last name is probably an empty string. if(is_null($person['fav_movie'])) { echo $person['first_name'].' did not specify a favorite movie.'; } // Output: Monty did not specify a favorite movie.
您可以使用两个技巧来编写更简洁的代码并避免将来出现错误。
1.与 empty()
和 is_null()
不同,您可以一次向 isset()
传递多个值,以同时检查其中是否有任何未定义或设置为 NULL
。在这种情况下,如果传递的值都不是 NULL
,则 isset()
将仅返回 true
。
2.不要使用 ==
来检查值是否为 NULL
。这将为错误值(例如计算为 false
的空字符串)提供误报。
本教程快速解释了 isset()
、empty()
和 is_null()
isset()
, empty()
atau is_null()
untuk menyemak sama ada satu atau semua syarat adalah benar atau palsu. 🎜
isset()
: Anda boleh menggunakan isset()
untuk menentukan sama ada pembolehubah telah diisytiharkan dan berbeza daripada null
. empty()
: Digunakan untuk menentukan sama ada pembolehubah wujud dan nilai pembolehubah itu tidak sama dengan false
. is_null()
: Fungsi ini digunakan untuk menyemak sama ada pembolehubah adalah null
. isset()
dan kosong()
NULL
, isset()
akan mengembalikan true kod>. Ini boleh termasuk <code>0
, rentetan kosong atau false
. Sebaliknya, empty()
akan mengembalikan true
apabila nilai pembolehubah ditetapkan untuk menilai kepada false
— kami panggil ini "false" " nilai. Contoh nilai falsey termasuk 0
, rentetan kosong ""
dan rentetan "0"
, tatasusunan kosong, NULL
, atau sudah tentu nilai boolean false
. 🎜
🎜Satu persamaan antara isset()
dan empty()
ialah kedua-duanya adalah binaan bahasa dan oleh itu tidak boleh dipanggil menggunakan fungsi pembolehubah. 🎜
🎜Coretan kod di bawah harus menerangkan perbezaan antara keduanya. 🎜
rrreee
🎜Sila ambil perhatian bahawa empty()
boleh ditulis menggunakan fungsi isset()
: 🎜
rrreee
🎜Sudah tentu, ia biasanya lebih mudah untuk menggunakan fungsi empty()
terbina dalam. 🎜
isset()
dan is_null()
NULL
, fungsi is_null()
akan mengembalikan true
. Jika tidak, ia hanya mengembalikan false
. Sebaliknya, isset()
mengembalikan true
apabila pembolehubah ditakrifkan dan nilainya bukan NULL
. 🎜
🎜Berikut adalah contoh asas untuk menunjukkan perbezaan antara mereka. 🎜
rrreee
kosong()
dan is_null()
false
, fungsi empty()
akan mengembalikan true
. Ini mungkin bermaksud rentetan kosong, NULL
, integer 0
atau tatasusunan tanpa unsur. Sebaliknya, is_null()
akan mengembalikan true
hanya jika nilai pembolehubah ialah NULL
. 🎜
🎜Berikut adalah contoh asas untuk menunjukkan perbezaan antara mereka. 🎜
rrreee
empty()
dan is_null()
, anda boleh menghantar berbilang nilai kepada isset()
sekaligus untuk menyemaknya secara serentak. Adakah mana-mana yang tidak ditentukan atau ditetapkan kepada NULL
. Dalam kes ini, isset()
hanya akan mengembalikan true
jika tiada nilai yang diluluskan adalah NULL
. 🎜
🎜2 Jangan gunakan ==
untuk menyemak sama ada nilainya NULL
. Ini akan memberikan positif palsu untuk nilai yang salah seperti rentetan kosong yang menilai kepada false
. 🎜
isset()
, empty()
dan is_null()
. Mudah-mudahan anda kini dapat menentukan yang mana antara ini yang terbaik untuk anda gunakan dalam kod anda. 🎜Atas ialah kandungan terperinci Bandingkan fungsi isset(), kosong() dan is_null() PHP. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!