2014-09-23 2 views
2

Сотрудник часто использует PHP-тернарный оператор как структуру управления, а не RHS выражения. Одним из таких примеров:Опасности/побочные эффекты использования тернарного оператора PHP как структуры управления

list==''?list=val:list=list+','+val; 

(. В этом примере оператор вызывается в цикле, чтобы добавить значения в строку, обеспечивая разделитель запятая не отображается, если есть только один пункт) В сущности, он опирается на оценку выражения, чтобы выполнить работу, и отбрасывает результат выражения.

Помимо того факта, что это трудно на глаза, есть ли какая-то причина, чтобы избежать этой конструкции? Это синтаксически законно; и он выполняется правильно. Но я уверен, что тернарный оператор не был предназначен для использования таким образом, и мне интересно, есть ли последствия для этого.

+1

«* Но я уверен, что тернарный оператор не был предназначен для использования таким образом *« Можете ли вы предоставить какие-либо материалы по этому поводу? (Меня интересует) –

+3

_ «Помимо того, что это трудно на глаза» _. На мой взгляд, это единственная проблема. – Debflav

+0

Если вы назначаете одну и ту же переменную в обеих ветвях, a-la 'x? A = b: a = c', вы повторяете себя, и существует риск присвоения неправильной переменной. Разумеется, этот риск снижается благодаря intellisense и другим удобствам, но он все еще не очень СУХОЙ. – DCoder

ответ

3

Он будет работать нормально, и я не вижу никаких проблем с ним, кроме чтения.

Если вы считаете, что это трудно на глаза, замените этот цикл и линию на вызов функции implode.

Смежные вопросы