2009-12-16 3 views
2

Я работаю на изменение сценария, чтобы лучше удовлетворить свои потребности, и я наткнулся на эту строку в коде:Что это за синтаксис в PHP?

return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : ""; 

Я знаю, что сама функция является по существу метод печенья добытчик, но я не совсем уверен, что означает этот синтаксис (т.е. «?» и «:»). Прошу прощения, если это очень глупый вопрос, но может ли кто-нибудь объяснить это мне?

ответ

13

Это ternary operation и в основном более компактный способ записи if/then/else.

Так что в вашем примере кода он используется вместо того, чтобы написать:

if (isset($_COOKIE[$parameter_name])) { 
    return $_COOKIE[$parameter_name]; 
} else { 
    return ""; 
} 
2

В? : являются тернарным оператором. Его очень быстро, если б тогда еще с:

if (a) { return b; } else { return c; } 

эквивалентно:

return a ? b : c; 
6

Это ternary operation, который не PHP специфичны и существует в большинстве охват языков.

(condition) ? true_case : false_case 

И, на мой взгляд, следует использовать только короткие лайнеры, как в вашем примере. В противном случае пострадает читаемость - поэтому никогда не гнездись на тройную операцию (хотя это возможно).

1
return isset($_COOKIE[$parameter_name]) ? $_COOKIE[$parameter_name] : ""; 

Функция возврат:

$_COOKIE[$parameter_name] 

Если $ _COOKIE с указанным parameter_name существует, пустая строка в противном случае.

Прототип:

condition ? this runs if condition true : this runs if condition false; 
Смежные вопросы