Heim  >  Artikel  >  Backend-Entwicklung  >  Was bedeuten PHPs ?:, ??, isset und empty?

Was bedeuten PHPs ?:, ??, isset und empty?

醉折花枝作酒筹
醉折花枝作酒筹nach vorne
2021-07-20 16:29:102110Durchsuche

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.

Was bedeuten PHPs ?:, ??, isset und empty?

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[&#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)); // 语法错误

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[&#39;name&#39;])); // 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[&#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); // 语法错误

?: Abkürzung für

ternärer Operator.

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

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!

Stellungnahme:
Dieser Artikel ist reproduziert unter:csdn.net. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen