Следующее строит ссылку:
if ($cta) {
$cta = vc_build_link($cta);
$cta_href = strip_tags(trim($cta['url']));
$cta_text = strip_tags(trim($cta['title']));
}
В настоящее время, если $cta_href или $cta_text являются пустыми полями в бэкенде, будет выброшено неопределенное variable errors.
Я пытаюсь адаптировать свой код с использованием тернарных операторов, чтобы сделать его более читабельным.
Чтобы устранить ошибки undefined variable, я хочу сделать:
если $add_cta равно yes (пользователь хочет добавить кнопку в этот раздел), то проверьте, не пусты ли $cta_href и $cta_text. Если они не empty, то покажите разметку тега привязки.
В настоящее время у меня есть:
echo ($add_cta == "yes" ? '<a class = "button " href = "'.$cta_href.'">'.$cta_text.'</a>' : "");
Но я не могу найти ничего об использовании and в тернарном выражении?
Как мне это сделать? и является ли мой текущий псевдокод лучшим способом приблизиться к этому?
То, что вы хотите сделать, не сделает ваш код более читабельным. Что-то вроде инициализации переменных, которые вы используете, будет.






Как насчет того, чтобы просто иметь ваше условие, как в операторе IF?
echo ($add_cta == "yes" && !empty($cta_href) && !empty($cta_text) ? '<a class = "button " href = "'.$cta_href.'">'.$cta_text.'</a>' : "");
Тернарный оператор просто
/* condition */ ? /* true value */ : /* false value */ ;
Таким образом, вы можете написать условие, как в операторе IF, WHILE и т. д..
Но тернарный оператор не обязательно означает, что ваш код будет лучше.
Что-то более простое будет легче читать инстинктивно.
if ($add_cta == "yes" && !empty($cta_href) && !empty($cta_text) ){
echo '<a class = "button " href = "'.$cta_href.'">'.$cta_text.'</a>';
}
хм, вы правы, попытка сократить количество строк кода не делает его более читабельным. Спасибо за совет + пометка этого правильного, потому что тернарный оператор тоже работает
так же, как оператор
AND(&&)