Maison > développement back-end > tutoriel php > Pourquoi ai-je besoin de parenthèses pour les opérateurs ternaires imbriqués ?

Pourquoi ai-je besoin de parenthèses pour les opérateurs ternaires imbriqués ?

Barbara Streisand
Libérer: 2024-11-04 09:04:30
original
680 Les gens l'ont consulté

Why Do I Need Parentheses for Nested Ternary Operators?

Opérateurs ternaires imbriqués : un casse-tête résolu

Dans le domaine de la programmation, les opérateurs ternaires imbriqués peuvent être un outil précieux pour les instructions conditionnelles concises. Cependant, leur mise en œuvre peut parfois s’avérer délicate. Un défi récent rencontré par un utilisateur consistait à utiliser isset() sous une forme imbriquée :

isset($_POST['selectedTemplate'])?$_POST['selectedTemplate']:isset($_GET['selectedTemplate'])?$_GET['selectedTemplate']:0
Copier après la connexion

L'utilisateur a été confronté à un problème avec cette expression et a demandé l'aide de la communauté des programmeurs. Examinons la solution qui a émergé :

Pour que les opérateurs ternaires imbriqués fonctionnent correctement, ils doivent être placés entre parenthèses. Cela garantit que les expressions sont évaluées dans l’ordre prévu. Voici le code corrigé :

$selectedTemplate = isset($_POST['selectedTemplate'])
                  ? $_POST['selectedTemplate']
                  : (
                       isset($_GET['selectedTemplate'])
                       ? $_GET['selectedTemplate']
                       : 0
                  );
Copier après la connexion

Cependant, pour une maintenabilité et une clarté améliorées, l'utilisation d'une instruction if/else est une approche plus recommandée :

$selectTemplate = 0;

if (isset($_POST['selectedTemplate'])) {
    $selectTemplate = $_POST['selectedTemplate'];
} elseif (isset($_GET['selectedTemplate'])) {
    $selectTemplate = $_GET['selectedTemplate'];
}
Copier après la connexion

Enfin, pour plus de simplicité et de facilité d'utilisation utilisation, cela vaut la peine d'envisager $_REQUEST :

$selectedTemplate = isset($_REQUEST['selectedTemplate'])
                  ? $_REQUEST['selectedTemplate']
                  : 0;
Copier après la connexion

N'oubliez pas que le choix de l'approche dépend en fin de compte des exigences spécifiques de votre application. Bon codage, et que vos ternaires soient parfaitement imbriqués !

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!

source:php.cn
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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal