Ich persönlich bin der Meinung, dass das Syntaxdesign in PHP zur Beurteilung, ob eine Variable existiert oder leer ist, ein Fehler ist. Die Arbeitsteilung ist unklar und es ist leicht, Lücken in der Beurteilung zu hinterlassen Design, das viele Funktionen zu haben scheint, aber vage ist. Dies kann nicht darauf zurückgeführt werden, dass PHP eine schwach typisierte Sprache ist, sondern ein Problem des Implementierers. Heute werde ich einige lustige Dinge vorstellen.
isset
Erkennen Sie, ob die Variable gesetzt wurde und nicht Null ist,
isset ( mixed $var , mixed $... = ? ) : bool
Wenn mehrere Parameter gleichzeitig übergeben werden, wird jeder Parameter von links nach rechts von Isset beurteilt , irgendwo in der Mitte Wenn die Variable nicht übergeben wird, wird sie sofort gestoppt.
isset() kann nur mit Variablen verwendet werden, da die Übergabe anderer Argumente einen Parsing-Fehler verursacht.
Wenn Sie erkennen möchten, ob eine Konstante gesetzt wurde, können Sie die Funktion define() verwenden.
Wenn isset() zur Überprüfung unzugänglicher Eigenschaften eines Objekts verwendet wird, wird diese überladene Methode aufgerufen, wenn die Methode __isset() definiert wurde.
Wenn eine Variable mit unset()] freigegeben wurde, ist sie nicht mehr isset().
Undefinierte Variablen melden keine Syntaxfehler.
<?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['name'])); // 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)); // 语法错误
Kann sicher zum Überprüfen der Variablen von Objektobjekten verwendet werden
// 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);
empty()
Beurteilt, dass eine Variable nicht existiert oder leer ist.
empty ( mixed $var ) : bool
Undefinierte Variablen melden keine Syntaxfehler.
Parameter müssen keine Variablen sein.
empty() entspricht im Wesentlichen !isset($var) || $var == false.
Gibt „false“ zurück, wenn var existiert und ein nicht leerer Wert ungleich Null ist, andernfalls wird „true“ zurückgegeben.
Wenn empty() für eine unsichtbare Objekteigenschaft verwendet wird, wird die Methode __isset() aufgerufen, sofern sie vorhanden ist.
<?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['name'])); // true var_dump(empty($d)); // true var_dump(empty("abc")); // false var_dump(empty(tt())); // true // var_dump(empty(MY_CONST)); // 语法错误
!
Stellen Sie fest, ob es leer ist. Sie können auch feststellen, ob undefinierte Variablen einen PHP-Hinweis melden und keinen Syntaxfehler melden und das Programm nicht beenden.
<?php function tt() { } $a = null; $b = 0; $c = []; var_dump(!$a); // true var_dump(!$b); // true var_dump(!$c); // true var_dump(!$c['name']); // 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); // 语法错误
?: Abkürzung für
ternärer Operator.
$c['name'] ?: 10 等价于 !$c['name'] ? 10 : $c['name']
Die Grundlage für sein Urteil ist also immer noch: Beurteilen, ob es leer ist. Sie können auch feststellen, ob undefinierte Variablen einen PHP-Hinweis melden und keinen Syntaxfehler melden und das Programm nicht beenden.
??
$a ?? 10 等价于 isset($a) ? $a : 1
Induktion
Beurteile, ob es existiert: isset, ??
Beurteile, ob es nicht existiert oder leer ist: empty()
Beurteile, ob es existiert ist leer, nicht empfohlen. Wird verwendet, um festzustellen, ob es existiert: !, ?:
Empfohlenes Lernen: php-Video-Tutorial
Das obige ist der detaillierte Inhalt vonWas bedeuten PHPs ?:, ??, isset und empty?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!