Тернарный оператор с тремя вариантами

Я пытаюсь сделать троичный оператор, который говорит:

  • Если кнопка == red-btn место red-btn в классе, если это не проверка

  • Если кнопка == white-btn место white-btn в классе, если это не проверка

  • Если кнопка == grey-btn место grey-btn в классе, если это не проверка

  • Если кнопка == red-btn место red-btn и т. д.

Таким образом, он проверяет один из трех вариантов, выбранных пользователем из моего выпадающего списка Custom Field Suite, который выводит red-btn, white-btn or grey-btn в зависимости от выбора пользователей.

Это мой код:

printf("<a class=\"%s\"href=\"%s\">%s</a></div>\n", $colour=="red-btn"?"red-btn": $colour=="white-btn"?"white-btn\": $colour=="grey-btn"?"grey-btn"", $button_link_url, $button_title);

Я знаю, что это неправильно, но мне нужна помощь, чтобы написать это правильно.

0

Решение

Я думаю, вам нужно больше скобок. Что-то вроде этого

printf("<a class=\"%s\" href=\"%s\">%s</a></div>\n",
($colour=="red-btn")?"red-btn":(
($colour=="white-btn")?"white-btn":(
($colour=="grey-btn")?"grey-btn":"")
),
$button_link_url,
$button_title
);
1

Другие решения

foreach($buttons as $button){
//var_dump($button);
$button_title = $button['button_title'];
$button_link_url = $button['button_link_url'];
$colour = $button['colour'];

reset($colour);
$first_colour = key($colour);

var_dump($first_colour);
printf("<a class='%s' href='%s'>%s</a>\n",
($first_colour=="Red")?"red-btn":(
($first_colour=="White")?"white-btn":(
($first_colour=="Grey")?"grey-btn":"")
),
$button_link_url,
$button_title
);
}
0

Вот еще один вариант, который не отвечает на поставленный вопрос (о троичных операторах), но может ответить на основной вопрос о размещении правильного класса в HTML

printf("<a class='%s' href='%s'>%s</a></div>\n",
$colour,
$button_link_url,
$button_title
);
-1
По вопросам рекламы [email protected]