« Programmation PHP/Opérateurs » : différence entre les versions
Contenu supprimé Contenu ajouté
→Opérateur de comparaison : Quand il y a un = dans le texte |
|||
Ligne 144 :
=== Opérateur ? ===
L'opérateur <code>?</code> permet de renvoyer une valeur ou une autre en fonction d'un test.
* <code>??</code> (depuis PHP 7) <ref>https://wiki.php.net/rfc/isset_ternary</ref> (''<span lang="en">Null Coalescing Operator</span>'') opérateur binaire qui renvoie l'opérande qui le précède s'il existe (isset), sinon l'opérande qui le suit.
* <code>?:</code> (depuis PHP 7) opérateur ternaire qui renvoie l'opérande qui le précède s'il existe et est non vide (empty), sinon l'opérande qui le suit.
Par exemple :
$appreciation = ($note>10) ? "bon" : "mauvais";▼
▲$appreciation = ($note>10) ? "bon" : "mauvais";
qui est équivalent au bloc PHP suivant :
<syntaxhighlight lang="php">
if ($note > 10) {
Ligne 169 ⟶ 162 :
Toutefois il présente un autre avantage que sa concision : la {{w|Stratégie d'évaluation (informatique)|stratégie d'évaluation}} de cet opérateur ne calcule pas le "else" si le script n'a pas besoin d'y aller. Il devient donc moins gourmand en ressources.
En l'absence de premier résultat, le ternaire renvoie l'expression comparée
print 1 ?: 2; // 1
print
print null ?: 2; // 2
{{remarque|Il est généralement plus lisible de placer un retour chariot avant les ternaires. Ex :
|