Aller au contenu

Sujets conseillés

Posté

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 ??

Posté

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

Posté

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 ?

Posté

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 :ph34r: si si, ça m'arrive :)

Tizel

Posté
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 ;)

Posté

dans bien des cas, ca évite des lignes d'écriture :

<input type=text name=nom value='<?=(($_SESSION['nom'])?$_SESSION['nom']:$_POST['nom'])?>'>

etc..

Posté (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é par Bobe
Posté

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!

Posté
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 :lol:

Dan

Veuillez vous connecter pour commenter

Vous pourrez laisser un commentaire après vous êtes connecté.



Connectez-vous maintenant
×
×
  • Créer...