empty determines whether a variable is "empty", and isset determines whether a variable has been set. It is this so-called "just as the name implies" that made me take some detours at the beginning: when a variable value is equal to 0, empty() will also be true (True)
empty determines whether a variable is "empty", and isset determines whether a variable has been set. It is this so-called "as the name implies" that made me take some detours at the beginning: when a variable value is equal to 0, empty() will also be true (true), so some accidents will occur. It turns out that although empty and isset are both variable processing functions, they are both used to determine whether the variable has been configured, but they have certain differences: empty will also detect whether the variable is empty or zero. When a variable value is 0, empty considers the variable to be equivalent to being empty, which is equivalent to not being set.
For example, to detect the $id variable, when $id=0, use empty and isset to detect whether the variable $id has been configured. Both will return different values - empty means that it is not configured, and isset can get the value of $id:
$id=0;
empty($id)?print "it's empty .":print "it's $id .";
//Result: it's empty .
Print "
";
!isset($id)?print "it's empty .":print "it's $id .";
//Result: it's 0 .
This means that when we use the variable processing function, when the variable may have a value of 0, be careful when using empty. At this time, it is more sensible to replace it with isset.
When the url tail parameter of a php tutorial page appears id=0 (for example: test.php?id=0), try to compare:
If(empty($id)) $id=1; - If id=0, id will also be 1
If(!isset($id)) $id=1; - If id=0, id will not be 1
The following code can be run separately to detect the above inference:
if(empty($id)) $id=1;
Print $id; // get 1if(!isset($id)) $id=1;
Print $id; //Get 0
Let’s see an example
$var = 0;
// The result is true because $var is empty
if (empty($var)) {
echo '$var is either 0 or not set at all';
}
// Result is false because $var is set
if (!isset($var)) {
echo '$var is not set at all';
}
?>
Since this is a language construct and not a function, it cannot be called from variable functions.
Note: empty() only tests variables, testing anything that is not a variable will result in a parsing error. In other words, the following statement will not work: empty(addslashes($name)).
The following is a detailed example code of isset and empty functions that has been tested by Script House. After reading this, it is basically the same
error_reporting(e_all);
echo 'undefined $var
';
echo "isset test:
";
if ( isset ( $var ))
{
echo 'Variable $var exists!
' ;
}
echo "empty test:
";
if ( empty ( $var )){
echo 'The value of variable $var is empty
';
}
else
{
echo 'The value of variable $var is not empty
';
}
echo "Test variables directly:
";
if ( $var ){
echo 'Variable $var exists!
';
}
else {
echo 'Variable $var does not exist!
';
}
echo '----------------------------------
';
echo '$var = ''
';
echo "isset test:
";
$var = '';
if ( isset ( $var ))
{
echo 'Variable $var exists!
' ;
}
echo "empty test:
";
if ( empty ( $var )){
echo 'The value of variable $var is empty
';
}
else
{
echo 'The value of variable $var is not empty
';
}
echo "Test variables directly:
";
if ( $var ){
echo 'Variable $var exists!
';
}
else {
echo 'Variable $var does not exist!
';
}
echo '----------------------------------
';
echo '$var = 0
';
echo 'isset test:
';
$var = 0 ;
if ( isset ( $var ))
{
echo 'Variable $var exists!
' ;
}
echo "empty test:
";
if ( empty ( $var )){
echo 'The value of variable $var is empty
';
}
else
{
echo 'The value of variable $var is not empty
';
}
echo "Test variables directly:
";
if ( $var ){
echo 'Variable $var exists!
';
}
else {
echo 'Variable $var does not exist!
';
}
echo '----------------------------------
';
echo '$var = null
';
echo 'isset test:
';
$var = null ;
if ( isset ( $var ))
{
echo 'Variable $var exists!
' ;
}
echo "empty test:
";
if ( empty ( $var )){
echo 'The value of variable $var is empty
';
}
else
{
echo 'The value of variable $var is not empty
';
}
echo "Test variables directly:
";
if ( $var ){
echo 'Variable $var exists!
';
}
else {
echo 'Variable $var does not exist!
';
}
echo '----------------------------------
';echo '$var ="php"
';
echo 'isset test:
';
$var = "php";
if ( isset ( $var ))
{
echo 'Variable $var exists!
' ;
}echo "empty test:
";
if ( empty ( $var )){
echo 'The value of variable $var is empty
';
}
else
{
echo 'The value of variable $var is not empty
';
}
echo "Test variables directly:
";
if ( $var ){
echo 'Variable $var exists!
';
}
else {
echo 'Variable $var does not exist!
';
}
?>