What do PHP's ?:, ??, isset, and empty mean?

醉折花枝作酒筹
Release: 2023-03-11 17:46:02
forward
2106 people have browsed it

Personally, I feel that the grammatical design for judging whether a variable exists or is empty in PHP is a failure. The division of labor is unclear and the boundaries are unclear. It is easy to leave loopholes in the judgment. I hate this kind of design that seems to have many functions but is vague. , this cannot be attributed to PHP being a weakly typed language, but a problem of the implementer. Today I will introduce some fun things.

What do PHP's ?:, ??, isset, and empty mean?

isset

Check whether the variable is set and non-null,

isset ( mixed $var , mixed $... = ? ) : bool
Copy after login
  • If multiple parameters are passed in at one time, each parameter will be judged by Isset from left to right. If a variable does not pass, it will stop immediately.

  • isset() can only be used with variables, as passing any other arguments will cause a parsing error.

  • If you want to check whether a constant has been set, you can use the defined() function.

  • If you use isset() to check the inaccessible properties of the object, this overloaded method will be called if the __isset() method has been defined.

  • If a variable has been released using unset()], it will no longer be isset().

  • Undefined variables will not report syntax errors.

<?php

function tt() {
    
}
$a = null;
$b = 0;
$c = [];
var_dump(isset($a)); // false
var_dump(isset($b)); // true
var_dump(isset($c)); // true
var_dump(isset($c[&#39;name&#39;])); // false
var_dump(isset($d)); // false
var_dump(isset($a, $b, $c, $d)); // false

// var_dump(isset("abc")); // 语法错误
// var_dump(isset(tt())); // 语法错误
// var_dump(isset(MY_CONST)); // 语法错误
Copy after login

Variables that can be safely used to check objects of objects

// instead of writing
isset($abc) && isset($abc->def) && isset($abc->def->ghi);

// or in a shorter form
isset($abc, $abc->def, $abc->def->ghi);

// you can just write
isset ($abc->def->ghi);
Copy after login

empty()

Judge whether a variable exists, or is empty.

empty ( mixed $var ) : bool
Copy after login
  • Undefined variables will not report syntax errors.

  • Parameters are not required to be variables.

  • empty() is essentially equivalent to !isset($var) || $var == false.

  • Returns false when var exists and is a non-empty and non-zero value, otherwise returns true.

  • When empty() is used on an invisible object property, the __isset() method will be called if it exists.

<?php

function tt() {
    
}
$a = null;
$b = 0;
$c = [];
var_dump(empty($a)); // true
var_dump(empty($b)); // true
var_dump(empty($c)); // true
var_dump(empty($c[&#39;name&#39;])); // true
var_dump(empty($d)); // true
var_dump(empty("abc")); // false
var_dump(empty(tt())); // true
// var_dump(empty(MY_CONST)); // 语法错误
Copy after login

!

Determine whether it is empty. You can also determine whether it exists. Undefined variables will report a PHP Notice and will not report a syntax error and will not terminate the program.

<?php

function tt() {
    
}
$a = null;
$b = 0;
$c = [];

var_dump(!$a); // true
var_dump(!$b); // true
var_dump(!$c); // true
var_dump(!$c[&#39;name&#39;]); // true  PHP Notice:  Undefined index: name
var_dump(!$d);  // true  PHP Notice:  Undefined index: name
var_dump(!("abc"));  // false
var_dump(!tt());  // true
// var_dump(!MY_CONST); // 语法错误
Copy after login

?:

Abbreviation for ternary operator.

$c[&#39;name&#39;] ?: 10 等价于 !$c[&#39;name&#39;] ? 10 : $c[&#39;name&#39;]
Copy after login

So the basis for its judgment is still: judging whether it is empty. You can also determine whether it exists. Undefined variables will report a PHP Notice and will not report a syntax error and will not terminate the program.

??

$a ?? 10 等价于 isset($a) ? $a : 1
Copy after login

Summary

  • Determine whether it exists: isset, ??

  • Determine whether it does not exist or is empty: empty()

  • Determine whether it is empty. It is not recommended to use it to determine whether it exists:!, ?:

Recommended learning: php video tutorial

The above is the detailed content of What do PHP's ?:, ??, isset, and empty mean?. For more information, please follow other related articles on the PHP Chinese website!

Related labels:
php
source:csdn.net
Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn
Popular Tutorials
More>
Latest Downloads
More>
Web Effects
Website Source Code
Website Materials
Front End Template