« 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";
<syntaxhighlight lang="php">
 
$appreciation = ($note>10) ? "bon" : "mauvais";
</syntaxhighlight>
qui est équivalent au bloc PHP suivant :
 
<syntaxhighlight lang="php">
if ($note>10)
$appreciation="bon";
else
$appreciation="mauvais";
</syntaxhighlight>
ou
<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 àsi lanon placenulle ou vide. Exemple :
print 1 ?: 2; // 1
<syntaxhighlight lang="php">
print 10 ?: 02; // 2
print null ?: 2; // 2
// 1
</syntaxhighlight>
 
{{remarque|Il est généralement plus lisible de placer un retour chariot avant les ternaires. Ex :