furious Gontran Posté 16 Décembre 2004 Posté 16 Décembre 2004 Bonjour, J'ais trouvé ce code dans un tutorial: return( get_magic_quotes_gpc() == 1 ? stripslashes($chaine) : $chaine ); Cela test la position de magic_quotes_gpc pour savoir si on utilise le stripslashes. Je ne comprend pas bien ce code. Est ce un autre moyen de faire un if ??
Dan Posté 16 Décembre 2004 Posté 16 Décembre 2004 Salut Furious Gontran Effectivement, c'est un "if déguisé", comme par exemple: $a = ($b>=0) ? "positif" : "négatif"; Si $b est >= 0, $a devient "positif" sinon il est égal à "négatif" On met en général un test entre parenthèses, suivi d'un "?", la valeur si le test retourne vrai, un ":" et la valeur si le test est faux. Dan
furious Gontran Posté 17 Décembre 2004 Auteur Posté 17 Décembre 2004 ok merci, Je ne sais pas si je vais utiliser cette notation desuite pour ne pas me perdre tout seul dans mon code; c'est quand meme plus pratique a lire les if traditionnels. Mais au moins je pourrais lire les codes des gens pressés economisant les characteres. A part le poid du code en raison du nombre limité de charactere, y'a t'il un avantage a utiliser cette notation ?
Tizel Posté 17 Décembre 2004 Posté 17 Décembre 2004 Non, elle est même déconseillée... Moi, je ne l'utilise quasiment jamais, sauf dans trois cas... 1) pour passer un argument rapidement au sein d'une fonction : mafonction(condition?arg1:arg2); qui est plus rapide que if(condition) { mafonction(arg1); } else { mafonction(arg2); } 2) Pour faire une affectation conditionelle simple String variable=condition?"vrai":"faux"; 3) Quand je désire rende le code illisible pour d'autres personnes si si, ça m'arrive Tizel
Dan Posté 17 Décembre 2004 Posté 17 Décembre 2004 Non, elle est même déconseillée... Ah ? Par qui donc ? A mon avis, elle est plus rapide (selon la version de l'interpréteur) qu'un if... else, et tout aussi lisible pour quelqu'un qui connait le langage php
Anonymus Posté 17 Décembre 2004 Posté 17 Décembre 2004 dans bien des cas, ca évite des lignes d'écriture : <input type=text name=nom value='<?=(($_SESSION['nom'])?$_SESSION['nom']:$_POST['nom'])?>'> etc..
Bobe Posté 18 Décembre 2004 Posté 18 Décembre 2004 (modifié) A mon avis, elle est plus rapide (selon la version de l'interpréteur) qu'un if... else, et tout aussi lisible pour quelqu'un qui connait le langage php <{POST_SNAPBACK}> En fait, elle est un petit peu plus lente qu'un bloc if...else (en ce qui concerne php du moins), mais il en faudrait des milliers dans un script pour s'en rendre compte (du moins d'après les résultats de tests qu'on m'a rapporté). Modifié 18 Décembre 2004 par Bobe
maximettb Posté 18 Décembre 2004 Posté 18 Décembre 2004 D'un autre coté, spéculer sur la plus ou moins grande rapidité d'un tel opérateur au sein d'un langage interpreté comme PHP, c'est être vraiment pointilleux!
Dan Posté 18 Décembre 2004 Posté 18 Décembre 2004 En fait, elle est un petit peu plus lente qu'un bloc if...else (en ce qui concerne php du moins), mais il en faudrait des milliers dans un script pour s'en rendre compte (du moins d'après les résultats de tests qu'on m'a rapporté). Tu as raison, mais il s'en faut de peu Pour visualiser cela, j'ai mis un script en place qui contient ceci: <?php function getmicrotime(){ list($usec, $sec) = explode(" ",microtime()); return ((float)$usec + (float)$sec); } $a=1;$time_start = getmicrotime(); for ($i=0; $i < 1000; $i++){ lie $string = ($a==1) ? "one" : "other";} $time_end = getmicrotime(); $time = $time_end - $time_start; echo "Calculé 1000 fois en $time secondes<br />"; $time_start = getmicrotime(); for ($i=0; $i < 1000; $i++){ if($a==1) $string="one"; else $string="other";} $time_end = getmicrotime(); $time = $time_end - $time_start; echo "Calculé 1000 fois en $time secondes<br />"; ?> Ce script est accessible à cette page: -http://www.webmaster-hub.com/outils/iftest.php <edit: fichier supprimé> Les résultats ne sont pas vraiment distants... mais il y a un léger avantage à la deuxième méthode. Difficile d'être affirmatif toutefois, vu les variations entre deux appels. Mais la première méthode est en tout cas plus rapide à écrire Dan
Sujets conseillés
Veuillez vous connecter pour commenter
Vous pourrez laisser un commentaire après vous êtes connecté.
Connectez-vous maintenant