2010-11-02 7 views
0

Possible en double:
the code “ : ” in phpLa signification de ':' et '?'

Je vois souvent beaucoup de code PHP en utilisant ? et :, mais je ne comprends pas ce que c'est. Voici un exemple:

$selected = ($key == $config['default_currency']) ? ' selected="selected"' : ''; 

Quelqu'un peut-il me nettoyer, s'il vous plaît? :)

+2

http://php.net/manual/language.operators.comparison.php#language.operators.comparison.ternary – poke

+1

* (apparenté) * [Que signifie ce symbole en PHP] (http://stackoverflow.com/questions/3737139/reference-what-does-this-symbol-mean-in-php) – Gordon

Répondre

6
(condition ? val1 : val2) 

est évaluée à val1 si condition est vrai, ou si val2condition est faux.


Depuis PHP 5.3, vous pouvez également voir une forme encore plus obscure qui laisse à val1:

(val0 ?: val2) 

est évaluée à val0 si val0 est évaluée à une valeur non-fausse ou val2 autrement. Yikes!


Voir http://php.net/manual/en/language.operators.comparison.php

14

C'est l'opérateur ternaire. C'est fondamentalement un if/else sur une ligne.

Par exemple, ces lignes:

if (!empty($_POST['value'])) { 
    $value = $_POST['value']; 
} else { 
    $value = ""; 
} 

peut être écourtée par cette ligne:

$value = (!empty($_POST['value'])) ? $_POST['value'] : ""; 

Il peut rendre le code plus facile à lire si vous ne maltraitez pas.

+0

+1 pour ** si vous n'en abusez pas **.J'ai vu de nombreux exemples de conditions ternaires imbriquées et cela me donne envie de pleurer à chaque fois. – netcoder

+0

+1 à ** si vous n'en abusez pas **. (pour l'amour de tout ce qui est bon, ne nichez pas!) – drudge

2

Il est un raccourci pour une instruction if

Vous pouvez transformer cette déclaration en ceci:

if ($key == $config['default_currency']) { 
    $selected = ' selected="selected"'; 
} else { 
    $selected = ''; 
} 
2

Il est le ternary conditional operator, comme dans C.

Votre code est équivalent à:

if ($key == $config['default_currency']) 
{ 
    $selected = ' selected="selected"'; 
} 
else 
{ 
    $selected = ''; 
} 
0

En pseudocode,

variable = (condition) ? statement1 : statement2 

cartes à

if (condition is true) 
then 
variable = statement1 
else 
variable = statement2 
end if