Ответ 1
$top = ($i == 0) ? '<div class="active item">' : (($i % 5 == 0) ? '<div class="item">' : '');
вам нужно добавить скобки вокруг всего блока
Я пытаюсь преобразовать следующий код в Тернарный оператор, но он не работает, и я не уверен, почему. Я думаю, что моя проблема в том, что я не знаю, как выразить операцию elseif
в трехмерном формате. По моему пониманию и elseif
выполняется так же, как операция if
, используя формат : (condition) ? 'result'
.
if ($i == 0) {
$top = '<div class="active item">';
} elseif ($i % 5 == 0) {
$top = '<div class="item">';
} else {
$top = '';
}
$top = ($i == 0) ? '<div class="active item">' : ($i % 5 == 0) ? '<div class="item">' : '';
$top = ($i == 0) ? '<div class="active item">' : (($i % 5 == 0) ? '<div class="item">' : '');
вам нужно добавить скобки вокруг всего блока
Тернарный оператор не поддерживает истинную операцию if... else if... else...
; однако вы можете имитировать поведение, используя следующую технику
var name = (variable === 1) ? 'foo' : ((variable === 2) ? 'bar' : 'baz');
Мне лично это все равно, потому что я не считаю его более читабельным или элегантным. Обычно я предпочитаю оператор switch
.
switch (variable) {
case 1 : name = 'foo'; break;
case 2 : name = 'bar'; break;
default : name = 'bas'; break;
}
Слишком поздно, возможно, поделиться некоторыми взглядами, но тем не менее:)
ИМХО. Наконец, разработчик, который решает компромисс между понятием кода и производительностью, и который, в свою очередь, решает, что из трехъядерного или if else-if else vs. switch-case можно использовать в любой конкретной ситуации.