2009-12-29 4 views
-1

Je suis curieux de savoir ce que la syntaxe ":" signifie en php je l'ai vu à quelques reprises, mais je ne peux pas sembler me l'expliquer. Pouvez-vous également l'utiliser dans une phrase ... ou je veux dire, un exemple de code?le code ":" en php

** modifier:

gens désolé, je faisais allusion à l'opérateur ternaire. Merci pour les autres entrées aussi. Je ne savais pas comment l'appeler au début, des excuses.

+3

Ce caractère peut être utilisé dans plusieurs contextes. Peut-être que * vous * devriez l'utiliser dans une phrase pour que nous puissions tous savoir ce que vous demandez vraiment. Copiez et collez quelques lignes qui démontrent son utilisation à partir du code que vous essayez de comprendre. –

Répondre

9

Il est le ternary operator: Parlez-vous

echo ($a == 1 ? "A is 1" : "A is not 1"); 
+1

+1 Bonne réponse succincte! –

10

Peut-être vous faites référence à la ternary operator, qui utilise un? et: comme suit:

$variable = boolean_expression ? "true_value" : "false_value"; 

Ce code est un raccourci pour un if-else:

if (boolean_expression) { 
    $variable = "true_value"; 
} 
else { 
    $variable = "false_value"; 
} 
0

Ceci est un court formulaire conditional expression, connu en PHP comme "opérateur ternaire." Voir le PHP manual pour plus de détails sur son utilisation.

echo ($sheLovesMe ? "She loves me!" : "She loves me not!"); 
5

Il peut également se référer à un goto

MyGoto: 
    if (DoSomething()) 
     goto MyGoto; 

Très peu de circonstances justifient un goto, mais c'est ce que cela peut signifier sinon un opérateur ternaire.

+0

Notez que l'opérateur goto n'est disponible qu'à partir de PHP 5.3. – alexn

6

Qu'en est-il de la syntaxe abrégée pour les blocs en PHP incorporés en HTML? Par exemple

<body> 
    <h1>Some Header</h1> 
    <?php if($somevariable == '4') : ?> 
     <h2>Some other thing</h2> 
     <p>Some text</p> 
    <?php else: ?> 
     <h3>Else!</h3> 
    <?php endif; ?> 
</body> 

Probablement, ne compte pas nécessairement en tant qu'opérateur. Plus d'un délimiteur ici.

+0

Ne doit pas * être * incorporé au HTML, n'est-ce pas? C'est simplement une syntaxe alternative pour la plupart des constructions qui utiliseraient autrement des accolades. –

+0

Il a été créé pour se débarrasser des accolades absurdes réparties à travers les balises PHP intégrées au format HTML. Si vous avez un bloc géant de PHP en HTML (horreur de le faire de côté), vous n'auriez pas besoin de les utiliser. C'est juste pour envelopper des morceaux de HTML avec PHP. –

2

L'opérateur ?: est un opérateur ternaire appelé conditional operator.

Il est conditionnel parce que les expressions Expr2 et expr3 en expr1 ? expr2 : expr3 sont évalués en fonction de la valeur de rendement évalué de expr1:

  • Si expr1 évalue à vrai, Expr2 est évalué et la valeur de retour de expr2 est la valeur de retour de l'ensemble ?: expression d'opérateur;
  • sinon expr3 est évalué et la valeur de retour de l'expression d'opérateur ?: est la valeur de retour de expr3.

Voici un exemple:

echo 1 == 1 ? "true" : "false"; 

Si 1 == 1 est évaluée à vrai, "true" seront renvoyées en écho, sinon "false".

Notez que l'opérateur ?: est juste un et non l'opérateur ternaire. Le ternaire mot signifie simplement qu'il ya trois opérandes (op1 ? op2 : op3), tout comme un opérateur binaire a deux opérandes (par exemple op1 + op2, op1/op2, op1 % op2, etc.) et les opérateurs unaires ont un seul opérande (par exemple !op, -op, ~op, etc.) .

+0

+1 pour ne pas l'appeler "l'opérateur ternaire" – Yacoby