Qqun pourrait-il m'éclaircir concernant cette synthaxe ?

YnOThAr Messages postés 22 Date d'inscription vendredi 14 mars 2003 Statut Membre Dernière intervention 9 juillet 2006 - 25 juin 2005 à 00:06
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 - 27 juin 2005 à 14:27
Voila je mattai un script et puis je suis tombé sur une synthax qui
correspond grossomodo à if (isset($mavariable)) { $mavariable $variabletemp; } else { $mavariable $defaut; }



Voila la synthaxe : $mavariable = $variabletemp ?"$variabletemp" : $defaut;

Alors est ce que qqun peut m'expliquer le point d'interrogation et la
chaine qui suit...lol je comprend pas ^^. Et si quelqu'un peut me
trouver la reference dans le manuel php de cet synthaxe pour savoir
depuis qu'elle version elle est utilisable.



Merci

27 réponses

cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 juin 2005 à 02:18
Salut,



elle est utilisable partout. Ce qui suit après le point d'interrogation
et avant les deux points est exécuté si la condition est vraie, et ce
qui suit les deux points est exécuté si la condition est fausse.



Exemple :



$variable=isset($_POST['variable'])? 'valeur1':'valeur2';



si la variable $_POST['variable'] existe, la variable $variable prendra pour valeur 'valeur1' dans le cas contraire, 'valeur2'



a +

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 juin 2005 à 04:15
c'est un if...

cette synthaxe marche aussi en C/C++ et en javascript, c'est bon à connaitre...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

[url]http://coucou747.hopto.org/url
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 juin 2005 à 10:23
hum justement c'est pas un if \o/ mais ça fait la même chose, tout en étant plus lent à l'éxécution, mais plus compact.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
YnOThAr Messages postés 22 Date d'inscription vendredi 14 mars 2003 Statut Membre Dernière intervention 9 juillet 2006
25 juin 2005 à 11:32
Enfin moi ce que je trouve bizar c'est que la variable ?variabletemp
est écrite sous forme d'une chaine de caractère... Mais bon si c'est
plus lent...qu'un bon vieu if/else
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 juin 2005 à 11:59
selon mes benchs, c'est aussi lent...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 juin 2005 à 12:36
pas selon les miens :



http://vulgarisation-informatique.com/optimiser-php.php

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
YnOThAr Messages postés 22 Date d'inscription vendredi 14 mars 2003 Statut Membre Dernière intervention 9 juillet 2006
25 juin 2005 à 13:02
Bon ba voyons le bon coté des choses, on gagne quelques octets d'espace disque..
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 juin 2005 à 13:18
lol, ça sert strictement à rien donc ^^

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
25 juin 2005 à 18:14
Disons qu'utiliser l'opérateur ternaire est beaucoup plus facile à lire
quand on veut faire rentrer une valeur ou une autre dans une variable.

En tout cas, c'est beaucoup moins chiant à lire que

if ($truc) {

$truc = $machin;

} else {

$truc = $bidule;

}



5 lignes contre 1 seule... y'a quoi qui va changer : 13ms sur 100 000
iterations ? C'est à dire pas grand chose au final (car il faut quand
même qu'il y est 100 000 visiteurs en un court laps de temps (dans un
ordre de grandeur de la milliseconde), ce qui n'est pas le souhait de
tout le monde !).
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 juin 2005 à 18:44
Bah justement je trouve que lire un if/else est plus simple, la preuve : cette question posée sur le forum.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
25 juin 2005 à 19:14
if else est théoriquement plus lent car plus chiant à parser...



In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
25 juin 2005 à 19:26
théoriquement, mais pas en réalité :-)

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
malalam Messages postés 10839 Date d'inscription lundi 24 février 2003 Statut Membre Dernière intervention 2 mars 2010 25
26 juin 2005 à 11:26
Ouais,



perso je n'utilise l'operateur ternaire que quand je trouve que c'est
plus clair, et c'est vrai que ca arrive. Mais ca reste rare.
Generalement, c'est quand j'inclus du php dans du html.

Je veux dire, quand j'ai plein de lignes html, et que j'ai juste besoin
de realiser 1 petite condition en php. Je trouve ca plus clair car ca
ne "casse" pas trop le html.

Autrement, je trouve aussi plus clair a lire un simple if...else.
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 juin 2005 à 11:37
pareil, je l'utilise aussi, surtout quand j'ai quelques variables à
vérifier à la suite, plutôt que d'avoir 40 lignes de if/else j'ai 10
lignes avec ça, mais ça reste très rare aussi me concernant.



PS : malalam > le chat avance ^^

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
coucou747 Messages postés 12303 Date d'inscription mardi 10 février 2004 Statut Membre Dernière intervention 30 juillet 2012 44
26 juin 2005 à 11:46
tout dépends de ce que tu veux faire : si tu peux affecter deux valeurs
différentes à une même variable, alors le if n'est pas bien employé...

In a dream, I saw me, drop dead... U was here, U cried... It was just a deam, if I die, U won't cry, maybe, U'll be happy

http://coucou747.hopto.org
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 juin 2005 à 11:49
le "bien employé" n'a pas son sens ici. Tout dépend ce que tu entends
par "bien employé". Pour moi le "bien employé" c'est tout d'abord le
code le plus rapide, et ensuite le code le plus propre. 10 lignes
propres contre 40 lignes un poil plus rapides (propres aussi mais
chiantes à lire), le choix est vite fait me concernant.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
26 juin 2005 à 13:52
Mais si un jour t'as un gros problème de maintenance (genre faille de
sécurité), jte dis pas la galère pour t'y retrouver. Pire encore si tu
passes ton projet à quelqu'un d'autres... et qui se retrouve confronter
à un problème faisant appel a ton code "rapide" mais chaotique :)



Finalement, si c'est pour gagner 1ms pour 10000 passage sur une page en 1seconde d'intervalle, ca vaut vraiment pas le coup =)
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 juin 2005 à 14:24
"Pire encore si tu passes ton projet à quelqu'un d'autres... et qui se
retrouve confronter à un problème faisant appel a ton code "rapide"
mais chaotique :)"



Je ne passe pas mes projets ;-)



Ensuite un if/else n'est pas du tout chaotique, c'est la syntaxe
standard. L'opérateur ternaire n'est là que pour simplifier
l'expression (et encore...). Un if/else est plus simple à lire qu'une
syntaxe comme celle-ci.

<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
FhX Messages postés 2350 Date d'inscription mercredi 13 octobre 2004 Statut Membre Dernière intervention 18 avril 2015 3
26 juin 2005 à 15:05
C'est plus facile de lire 20 fois :



$truc = ($machin) ? $machin : $bidule;



que 20 fois :



if ($machin)

$truc = $machin;

else

$truc = $bidule;



4 lignes au lieu d'1... multiplie les par 20 :) 100 lignes contre 20, l'avantage est clairement pour l'opérateur ternaire.



Enfin, moi jvais pas pleurer pour une pauvre milliseconde, sachant que
c'est toujours la transmission client/serveur qui fait le plus défaut
dans la visite d'une page web, et certainement pas la génération du
code (100 à 200ms de génération de code --> 3 à 4sec le temps de
chargement complète de la page (au mieux des cas) ).

A moins que je fasses erreur... !
0
cs_Anthomicro Messages postés 9433 Date d'inscription mardi 9 octobre 2001 Statut Membre Dernière intervention 13 avril 2007 8
26 juin 2005 à 15:07
Bah relis mon avant dernier post dans ce cas tu verras que je partage
ton avis dans le cas présent : "Pour moi le 'bien employé' c'est tout
d'abord le code le plus rapide,
et ensuite le code le plus propre. 10 lignes propres contre 40 lignes
un poil plus rapides (propres aussi mais chiantes à lire), le choix est
vite fait me concernant."




<hr size="2" width="100%">




<li>Entraide, dépannage et vulgarisation informatique: Mon site de vulgarisation informatique</li>
0
Rejoignez-nous