Maison > Article > développement back-end > Que signifient les caractères ?:, ??, isset et vide de PHP ?
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.
isset
Détectez si la variable a été définie et non nulle,
isset ( mixed $var , mixed $... = ? ) : bool
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['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)); // 语法错误
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);
empty()
Juge qu'une variable n'existe pas ou est vide.
empty ( mixed $var ) : bool
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['name'])); // true var_dump(empty($d)); // true var_dump(empty("abc")); // false var_dump(empty(tt())); // true // var_dump(empty(MY_CONST)); // 语法错误
!
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['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); // 语法错误
? : Abréviation de
opérateur ternaire.
$c['name'] ?: 10 等价于 !$c['name'] ? 10 : $c['name']
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!