Accueil > > > IF - ELSEIF - ELSE AVEC L'OPÉRATEUR TERNAIRE
IF - ELSEIF - ELSE AVEC L'OPÉRATEUR TERNAIRE
Information sur la source
Description
Alors voila, moi qui aime bien l'opérateur ternaire pour sa simplicité, je me suis demandé comment on pouvait utiliser cet opérateur avec l'option elseif. Et bien voila :
Source
- <?php
- // Imaginons que votre code est de ce type :
- $var = 1;
- $var2 = 0;
- if ( $var === 0 ) {
- $truc = true;
- } elseif ( $var2 === 0 ) {
- $truc = true;
- } else {
- $truc = false;
- }
- // 6 lignes à écrire pour si peu ? Voici la version compactée :
-
- $var = 1;
- $var2 = 0;
- $truc = ( $var === 0 ) ? true : ( $var2 === 0 ) ? true : false;
-
- // Et oui, en une ligne, j'utilise 2 fois l'opérateur ternaire pour faire comme un if-elseif-else.
- ?>
- <?php
- // ***************** Nouvel exemple un peu plus concret ! *******************
- // Imaginons que vous souhaitez utiliser votre propre mode de session.
- // Pour rappel, l'utilisation d'une session oblige à avoir un id de session pour pouvoir s'y retrouver.
- // Cet id, soit on le fait passer par un cookie, soit par l'URL (jusqu'ici, rien de très compliqué )
- // Ici, l'id sera stocké soit stocké dans un cookie ( $_COOKIE['session_id'] ), ou par passage dans l'url :
- // xxx.php?sid=xopiasj53sdf2483sd453s5
-
- $sid = ( isset($_COOKIE['session_id']) ) ? $_COOKIE['session_id'] : ( isset($_GET['sid']) ) ? $_GET['sid'] : NULL;
-
- ?>
- Après, il faut faire d'autres test pour valider l'id de session, mais ca je m'en fou, ce que je veux présenter, c'est l'emploi du double opérateur ternaire à la place d'un if/elseif/else.
- Voila, l'exemple est un peu plus présentable je trouve.
- Je redonne quand même le même exemple du dessus avec le vieux if/elseif/else :
- <?php
- if ( isset($_COOKIE['session_id']) ) {
- $sid = $_COOKIE['session_id'];
- } elseid ( isset($_GET['sid'] ) {
- $sid = $_COOKIE['session_id'];
- } else {
- $sid = NULL;
- }
- ?>
- Enfin, moi perso, je trouve rebarbatif d'utiliser if/elseif/else pour changer qu'une seule variable. Je trouve l'opérateur ternaire beaucoup plus efficace pour ca.
- Si par contre, il y a d'autres chose à exécuter, l'opérateur ternaire n'est plus à utiliser !
- Il faut savoir l'utiliser au moment opportun !
-
- <?php
- // Dernier exemple :
- if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
- $ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
- } elseif ( isset($_SERVER['HTTP_CLIENT_IP']) ) {
- $ip = $_SERVER['HTTP_CLIENT_IP'];
- } else {
- $ip = $_SERVER['REMOTE_ADDR'];
- }
-
- // Ou alors :
- $ip = ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : ( isset($_SERVER['HTTP_CLIENT_IP']) ) ? $_SERVER['HTTP_CLIENT_IP'] : $_SERVER['REMOTE_ADDR'];
- ?>
<?php
// Imaginons que votre code est de ce type :
$var = 1;
$var2 = 0;
if ( $var === 0 ) {
$truc = true;
} elseif ( $var2 === 0 ) {
$truc = true;
} else {
$truc = false;
}
// 6 lignes à écrire pour si peu ? Voici la version compactée :
$var = 1;
$var2 = 0;
$truc = ( $var === 0 ) ? true : ( $var2 === 0 ) ? true : false;
// Et oui, en une ligne, j'utilise 2 fois l'opérateur ternaire pour faire comme un if-elseif-else.
?>
<?php
// ***************** Nouvel exemple un peu plus concret ! *******************
// Imaginons que vous souhaitez utiliser votre propre mode de session.
// Pour rappel, l'utilisation d'une session oblige à avoir un id de session pour pouvoir s'y retrouver.
// Cet id, soit on le fait passer par un cookie, soit par l'URL (jusqu'ici, rien de très compliqué )
// Ici, l'id sera stocké soit stocké dans un cookie ( $_COOKIE['session_id'] ), ou par passage dans l'url :
// xxx.php?sid=xopiasj53sdf2483sd453s5
$sid = ( isset($_COOKIE['session_id']) ) ? $_COOKIE['session_id'] : ( isset($_GET['sid']) ) ? $_GET['sid'] : NULL;
?>
Après, il faut faire d'autres test pour valider l'id de session, mais ca je m'en fou, ce que je veux présenter, c'est l'emploi du double opérateur ternaire à la place d'un if/elseif/else.
Voila, l'exemple est un peu plus présentable je trouve.
Je redonne quand même le même exemple du dessus avec le vieux if/elseif/else :
<?php
if ( isset($_COOKIE['session_id']) ) {
$sid = $_COOKIE['session_id'];
} elseid ( isset($_GET['sid'] ) {
$sid = $_COOKIE['session_id'];
} else {
$sid = NULL;
}
?>
Enfin, moi perso, je trouve rebarbatif d'utiliser if/elseif/else pour changer qu'une seule variable. Je trouve l'opérateur ternaire beaucoup plus efficace pour ca.
Si par contre, il y a d'autres chose à exécuter, l'opérateur ternaire n'est plus à utiliser !
Il faut savoir l'utiliser au moment opportun !
<?php
// Dernier exemple :
if( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) {
$ip = $_SERVER['HTTP_X_FORWARDED_FOR'];
} elseif ( isset($_SERVER['HTTP_CLIENT_IP']) ) {
$ip = $_SERVER['HTTP_CLIENT_IP'];
} else {
$ip = $_SERVER['REMOTE_ADDR'];
}
// Ou alors :
$ip = ( isset($_SERVER['HTTP_X_FORWARDED_FOR']) ) ? $_SERVER['HTTP_X_FORWARDED_FOR'] : ( isset($_SERVER['HTTP_CLIENT_IP']) ) ? $_SERVER['HTTP_CLIENT_IP'] : $_SERVER['REMOTE_ADDR'];
?>
Conclusion
Cependant, niveau temps d'exécution, je sais que ca risque d'alourdir un peu la charge. De combien, je n'en sais rien.
Vous pouvez rajouter autant d'opérateur ternaire que de elseif à rajouter si jamais y'en a plus d'un !
Voila :) Ps: je met ca en tant que Débutant, car c'est plus de la logique qu'autre chose. Même si l'opérateur ternaire est très rebutant au début (connaissance de cause :))
Historique
- 25 octobre 2005 01:02:42 :
- J'ai oublié les balises php :p
- 25 octobre 2005 11:58:17 :
- Correction et ajout d'un nouvel exemple un peu plus concret.
- 25 octobre 2005 14:56:39 :
- Rajout d'un autre exemple basé sur l'adresse ip !
Sources du même auteur
Sources de la même categorie
Commentaires et avis
Discussions en rapport avec ce code source dans le forum
instruction if..elseif...else [ par andlauer ]
j'ai un problème avec l'instruction if..elseif...else. Il ne reconnait simplement pas le elseif. Par exemple, dans cette instruction : if ($act == 'T
Tableau dans php [ par shadow578 ]
Bonjour, Alors j'ai un petit script qui me permet de lister les fichiers présents dans le dossier, jusqu'à la tout va bien, mais j'aimerai les cla
affichage de la mention [ par rudybiss ]
Bonjour!Je développe une application sur la gestion des notes en php.Tout marche bien à l'exception de l'affichage de la mention.En fait,il n'arrive p
arborescence tree php [ par lina22 ]
bonjour, en faite lors de l'affichage de l'arborescence je vx pas afficher l'extension est ce que qlq un peut m'aider svp merci exp nom.php je veux af
echiquier [ par jackinfor ]
Bonjour,J'essaye pour le moment de faire un échiquier, mais comme je suis un débutant bah je bloque :)Voila mon code pour le momentMerci de m'aider<
if_else [ par menyarito ]
Bonjour, le bloc affiche uniquement le 1er résultat [u]'disponibles'[/u] quelque soit la condition true or false.j'ai beaucoup essayer avec mais... [
Problème d'essence ^^ IF ... ELSE ... [ par NextGenration ]
Bonjour et tout mes voeux pour cette nouvelle année à ceux et celles qui lirons ce post! Comme dit plus haut, j'ai un problème d'IF ! je passe outre
inscription des clients [ par samia22 ]
Bonjour a tous; j'ai un probleme lors d'inscription des clients ... ca na marche pas.. easyphp m'affiche: erreur dans la requete.. voici le code:
Pb rajout saut de page [ par Falcon074 ]
Bonjour, Je cherche un moyen de rajouter un saut de page à la fin de tous les 6 enr
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|