Проще чем использовать корпус переключателя для изменения цвета

На моем веб-сайте я использую случай переключения, чтобы указать цвет активной ссылки на навигационную панель.

Сначала я объявил массив $case со всеми возможными ссылками в панели навигации. Затем я проверяю, была ли эта функция нажата на одну из страниц (если строка запроса не пуста), и если она была помещена в массив $case (чтобы не менять цвет при нажатии других ссылок внутри других страниц .)

Если true, $current получит такое значение, как docs_zamo или akuut_wgakuut --> FILENAME_QUERY. Я только хочу изменить цвет, когда объявлял его раньше (в массиве $ case). В противном случае это будет просто имя файла (без '.php').

Я нахожу этот кусок кода довольно громоздким. Есть ли другой способ выполнить эту работу? Я довольно новичок в PHP. Я думал; если есть функция, проверяющая, существует ли случай внутри коммутатора, тогда мне не понадобится массив $ case, потому что я бы уже заявил о существовании связи внутри случая коммутатора.

Код, чтобы проверить, является ли ссылка FILENAME_QUERY:

 $case = array("index","medica","praesidium","akuut","sponsors","docs","docs_zamo","kalender","evenementen","fotos","werking","jaarraden","akuut_wgakuut","onderwijs","sociaal","sport","werkgroepen","eerstejaars","international",); if (($_SERVER['QUERY_STRING'] != "") && (in_array(basename($_SERVER['PHP_SELF'],'.php') ."_". str_replace('actie=','',$_SERVER['QUERY_STRING']),$case) == true)) { $current = basename($_SERVER['PHP_SELF'],'.php') ."_". str_replace('actie=','',$_SERVER['QUERY_STRING']); } else {$current = basename($_SERVER['PHP_SELF'],'.php');} 

Выключатель:

 $id = array("","","","","","","","","","","","","","","","","","",""); switch($current) { case $case[0]:$id[0]="class = 'here'";break; case $case[1]:$id[1]="class = 'here'";break; case $case[2]:$id[2]="class = 'here'";break; case $case[3]:$id[3]="class = 'here'";break; case $case[4]:$id[4]="class = 'here'";break; case $case[5]:$id[5]="class = 'here'";break; case $case[6]:$id[18]="class = 'here'";break; case $case[7]:$id[6]="class = 'here'";break; case $case[8]:$id[7]="class = 'here'";break; case $case[9]:$id[8]="class = 'here'";break; case $case[10]:$id[9]="class = 'here'";break; case $case[11]:$id[10]="class = 'here'";break; case $case[12]:$id[11]="class = 'here'";break; case $case[13]:$id[12]="class = 'here'";break; case $case[14]:$id[13]="class = 'here'";break; case $case[15]:$id[14]="class = 'here'";break; case $case[16]:$id[15]="class = 'here'";break; case $case[17]:$id[16]="class = 'here'";break; case $case[18]:$id[17]="class = 'here'";break; } ?> 

HTML:

 <div id='menu'> <ul> <li><a href='index.php' <? echo $id[0]; ?>>home</a></li> <li><a href='medica.php' <? echo $id[1]; ?>>medica</a> <ul> <li><a href='praesidium.php' <? echo $id[2]; ?>>&raquo; praesidium</a></li> <li><a href='akuut.php' <? echo $id[3]; ?>>&raquo; akuut</a></li> <li><a href='sponsors.php' <? echo $id[4]; ?>>&raquo; sponsors</a></li> </ul> </li> <li><a href='docs.php' <? echo $id[5]; ?>>doc's bar</a> <ul> <li><a href='docs.php' <? echo $id[5]; ?>>&raquo; doc's</a></li> <li><a href='docs.php?actie=zamo' <? echo $id[18]; ?>>&raquo; zamo</a></li> </ul> </li> <li><a href='kalender.php' <? echo $id[6]; ?>>kalender</a> <ul> <li><a href='evenementen.php' <? echo $id[7]; ?>>&raquo; evenementen</a></li> </ul> </li> <li><a href='fotos.php' <? echo $id[8]; ?>>foto's</a></li> <li><a href='werking.php' <? echo $id[9]; ?>>Werking</a> <ul> <li><a href='jaarraden.php' <? echo $id[10]; ?>>&raquo; jaarraden</a></li> <li><a href='akuut.php?actie=wgakuut' <? echo $id[11]; ?>>&raquo; akuut</a></li> <li><a href='onderwijs.php' <? echo $id[12]; ?>>&raquo; onderwijs</a></li> <li><a href='sociaal.php' <? echo $id[13]; ?>>&raquo; sociaal</a></li> <li><a href='sport.php' <? echo $id[14]; ?>>&raquo; sport</a></li> <li><a href='werkgroepen.php' <? echo $id[15]; ?>>&raquo; werkgroepen</a></li> </ul> </li> <li><a href='eerstejaars.php' <? echo $id[16]; ?>>eerstejaars</a></li> <li><a href='https://www.medica-csd.be' target='_blank'>cursusdienst</a></li> <li style='border:none;'><a href='http://www.medica.be/w' target='_blank'>wikimedica</a></li> <li><a href='international.php' <? echo $id[17]; ?>>international <img src='site/images/gb.png'></a></li> </ul> </div> , <div id='menu'> <ul> <li><a href='index.php' <? echo $id[0]; ?>>home</a></li> <li><a href='medica.php' <? echo $id[1]; ?>>medica</a> <ul> <li><a href='praesidium.php' <? echo $id[2]; ?>>&raquo; praesidium</a></li> <li><a href='akuut.php' <? echo $id[3]; ?>>&raquo; akuut</a></li> <li><a href='sponsors.php' <? echo $id[4]; ?>>&raquo; sponsors</a></li> </ul> </li> <li><a href='docs.php' <? echo $id[5]; ?>>doc's bar</a> <ul> <li><a href='docs.php' <? echo $id[5]; ?>>&raquo; doc's</a></li> <li><a href='docs.php?actie=zamo' <? echo $id[18]; ?>>&raquo; zamo</a></li> </ul> </li> <li><a href='kalender.php' <? echo $id[6]; ?>>kalender</a> <ul> <li><a href='evenementen.php' <? echo $id[7]; ?>>&raquo; evenementen</a></li> </ul> </li> <li><a href='fotos.php' <? echo $id[8]; ?>>foto's</a></li> <li><a href='werking.php' <? echo $id[9]; ?>>Werking</a> <ul> <li><a href='jaarraden.php' <? echo $id[10]; ?>>&raquo; jaarraden</a></li> <li><a href='akuut.php?actie=wgakuut' <? echo $id[11]; ?>>&raquo; akuut</a></li> <li><a href='onderwijs.php' <? echo $id[12]; ?>>&raquo; onderwijs</a></li> <li><a href='sociaal.php' <? echo $id[13]; ?>>&raquo; sociaal</a></li> <li><a href='sport.php' <? echo $id[14]; ?>>&raquo; sport</a></li> <li><a href='werkgroepen.php' <? echo $id[15]; ?>>&raquo; werkgroepen</a></li> </ul> </li> <li><a href='eerstejaars.php' <? echo $id[16]; ?>>eerstejaars</a></li> <li><a href='https://www.medica-csd.be' target='_blank'>cursusdienst</a></li> <li style='border:none;'><a href='http://www.medica.be/w' target='_blank'>wikimedica</a></li> <li><a href='international.php' <? echo $id[17]; ?>>international <img src='site/images/gb.png'></a></li> </ul> </div> 

Solutions Collecting From Web of "Проще чем использовать корпус переключателя для изменения цвета"

Весь этот блок …

 switch($current) { case $case[0]:$id[0]="class = 'here'";break; case $case[1]:$id[1]="class = 'here'";break; case $case[2]:$id[2]="class = 'here'";break; case $case[3]:$id[3]="class = 'here'";break; case $case[4]:$id[4]="class = 'here'";break; case $case[5]:$id[5]="class = 'here'";break; case $case[6]:$id[18]="class = 'here'";break; case $case[7]:$id[6]="class = 'here'";break; case $case[8]:$id[7]="class = 'here'";break; case $case[9]:$id[8]="class = 'here'";break; case $case[10]:$id[9]="class = 'here'";break; case $case[11]:$id[10]="class = 'here'";break; case $case[12]:$id[11]="class = 'here'";break; case $case[13]:$id[12]="class = 'here'";break; case $case[14]:$id[13]="class = 'here'";break; case $case[15]:$id[14]="class = 'here'";break; case $case[16]:$id[15]="class = 'here'";break; case $case[17]:$id[16]="class = 'here'";break; case $case[18]:$id[17]="class = 'here'";break; } 

можно заменить на цикл:

 for($i=0;$i<19;$i++) { if($case[$i] == $current) { $id[$i] = "class = 'here'"; break; } } 

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