Может быть, вы можете немного облегчить свою жизнь:
echo '<div id="filter_bar"><ul>',
'<li><a href="?select=trending"', $_GET['select'] == "trending" ? ' class="filter_selected">' : '>', 'Trending</a></li>',
'<li><a href="?select=most_picked"', $_GET['select'] == "most_picked" ? ' class="filter_selected">' : '>', 'Most Picked</a></li>',
'<li><a href="?select=newest"', ($_GET['select'] == "newest") || empty($_GET['select']) ? ' class="filter_selected">' : '>', 'Newest</a></li>',
'</ul></div>';
Который будет использовать запятые (не нужно многократно повторять эхо), и вам не нужно будет повторять слишком много строк, если вы только хотите вставить атрибут класса.
Затем вы использовали круглые скобки там, где они не были нужны (см. Приоритет оператора Документы ) , но в месте, где эти нужны, вы их не использовали (последний случай).
Кроме того, лучше заполнить эти значения переменными заранее, чтобы можно было легче отлаживать вещи (и вы не смешиваете $_GET
с выводом, чтобы предотвратить смешивание логики вывода с входными переменными).
После этого вы могли бы узнать, что ваша проблема не в echo
, а только в выражении, которое вы сформулировали с помощью троичного оператора.
$class_trending = $_GET['select'] == "trending" ? ' class="filter_selected"' : '';
$class_most_picked = $_GET['select'] == "most_picked" ? ' class="filter_selected"' : '';
$class_newest = ($_GET['select'] == "newest") || empty($_GET['select']) ? ' class="filter_selected"' : '';
echo '<div id="filter_bar"><ul>',
'<li><a href="?select=trending"', $class_trending, '>Trending</a></li>',
'<li><a href="?select=most_picked"', $class_most_picked, '>Most Picked</a></li>',
'<li><a href="?select=newest"',$class_newest , '>Newest</a></li>',
'</ul></div>';