Que signifient les caractères ?:, ??, isset et vide de PHP ?

醉折花枝作酒筹
Libérer: 2023-03-11 17:46:02
avant
2107 Les gens l'ont consulté

Personnellement, je pense que la conception syntaxique en PHP pour juger si une variable existe ou est vide est un échec. La division du travail n'est pas claire et les limites ne sont pas claires. Il est facile de laisser des lacunes dans le jugement. de conception qui semble avoir de nombreuses fonctions mais qui est vague. Cela ne peut pas être attribué au fait que PHP est un langage faiblement typé, mais à un problème de l'implémenteur. Aujourd'hui, je vais vous présenter quelques choses amusantes.

Que signifient les caractères ?:, ??, isset et vide de PHP ?

isset

Détectez si la variable a été définie et non nulle,

isset ( mixed $var , mixed $... = ? ) : bool
Copier après la connexion
  • Si plusieurs paramètres sont transmis en même temps, alors chaque paramètre sera jugé par Isset, de gauche à droite , quelque part au milieu. Si la variable ne passe pas, elle s'arrêtera immédiatement.

  • isset() ne peut être utilisé qu'avec des variables, car la transmission de tout autre paramètre entraînera une erreur d'analyse.

  • Si vous souhaitez détecter si une constante a été définie, vous pouvez utiliser la fonction définie().

  • Si isset() est utilisé pour vérifier les propriétés inaccessibles d'un objet, cette méthode surchargée sera appelée si la méthode __isset() a été définie.

  • Si une variable a été libérée en utilisant unset()], elle ne sera plus isset().

  • Les variables non définies ne signaleront pas les erreurs de syntaxe.

<?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)); // 语法错误
Copier après la connexion

Peut être utilisé en toute sécurité pour vérifier les variables d'objets d'objets

// 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);
Copier après la connexion

empty()

Juge qu'une variable n'existe pas ou est vide.

empty ( mixed $var ) : bool
Copier après la connexion
  • Les variables non définies ne signaleront pas les erreurs de syntaxe.

  • Les paramètres ne doivent pas nécessairement être des variables.

  • empty() est essentiellement équivalent à !isset($var) || $var == false.

  • Renvoie false lorsque var existe et est une valeur non vide et non nulle, sinon renvoie vrai.

  • Lorsque empty() est utilisé sur une propriété d'objet invisible, la méthode __isset() sera appelée si elle existe.

<?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)); // 语法错误
Copier après la connexion

!

Déterminez s'il est vide. Vous pouvez également déterminer si elle existe. Les variables non définies signaleront un avis PHP et ne signaleront pas d'erreur de syntaxe et ne termineront pas le programme.

<?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); // 语法错误
Copier après la connexion

? : Abréviation de

opérateur ternaire.

$c[&#39;name&#39;] ?: 10 等价于 !$c[&#39;name&#39;] ? 10 : $c[&#39;name&#39;]
Copier après la connexion

Donc la base de son jugement est toujours : juger si elle est vide. Vous pouvez également déterminer si elle existe. Les variables non définies signaleront un avis PHP et ne signaleront pas d'erreur de syntaxe et ne termineront pas le programme.

? est vide, non recommandé Utilisé pour déterminer s'il existe : !, ?:

Apprentissage recommandé : Tutoriel vidéo php

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
php
source:csdn.net
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal