Enquête sur l'opérateur ternaire : énigme de la concaténation
Dans ce dilemme de programmation, un codeur curieux rencontre un résultat inattendu lors de l'utilisation de l'opérateur ternaire et de la concaténation de chaînes . Le code original se lit comme suit :
$description = 'Paper: ' . ($paperType == 'bond') ? 'Bond' : 'Other';
L'intention était que la variable $description contienne la chaîne "Paper : Bond" si $paperType est égal à "bond", ou "Paper : Other" dans le cas contraire. Cependant, le résultat obtenu était simplement « Lien » ou « Autre ».
La clé pour résoudre ce problème réside dans l'ordre des opérations dans l'expression ternaire. Bien que l'opérateur ternaire soit un raccourci pratique pour les affectations conditionnelles, il fonctionne à un niveau de priorité différent de celui de la concaténation de chaînes. De ce fait, l'opération de concaténation se produit effectivement avant l'évaluation de l'expression ternaire.
Pour remédier à cela, le code doit être modifié pour garantir que la concaténation soit effectuée après l'évaluation de l'expression ternaire. Le code corrigé :
$description = 'Paper: ' . ($paperType == 'bond' ? 'Bond' : 'Other');
En mettant l'expression ternaire entre parenthèses, le code garantit que la concaténation de chaînes est effectuée sur le résultat de l'expression ternaire, produisant le résultat attendu soit "Paper: Bond" soit "Papier : Autre" basé sur la valeur de $paperType.
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!