2016-05-06 2 views
0

Я написал очень простой оператор if, чтобы проверить URL-адрес. Он отлично работает, но есть ли способ обрезать его?Уменьшить if/else заявления

<?php if ($_SERVER['REQUEST_URI'] === "/jim.html") { ?> 
    <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">Inman jim <i class="fa fa-angle-down"></i></a> 
    <?php } elseif ($_SERVER['REQUEST_URI'] === "/bob.html") { ?> 
    <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">bob <i class="fa fa-angle-down"></i></a> 
    <?php } elseif ($_SERVER['REQUEST_URI'] === "/dereck.html") { ?> 
    <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">dereck <i class="fa fa-angle-down"></i></a> 
    <?php } elseif ($_SERVER['REQUEST_URI'] === "/maxamilamatronicus") { ?> 
    <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">maxamilamatronicus <i class="fa fa-angle-down"></i></a> 

Это просто, чтобы показать правильный заголовок при падении выпадающего меню.

Спасибо!

+0

любой случай или тернарный оператор –

ответ

2

здесь является более простой код, который дает тот же результат:

<?php 
$menus = [ 
    '/jim.html'  => [ 'title' => 'Inman jim', 'href' => '#'], 
    '/bob.html'  => [ 'title' => 'bob', 'href' => '#'], 
    '/dereck.html' => [ 'title' => 'dereck', 'href' => '#'], 
    '/maxamilamatronicus' => [ 'title' => 'maxamilamatronicus', 'href' => '#'] 
]; 
$menu = ['title' => 'Unknown', 'href' => '#']; 
if(isset($menus[$_SERVER['REQUEST_URI']])) 
    $menu = $menus[$_SERVER['REQUEST_URI']]; 
?> 
<a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="<?=$menu['href']?>"> 
    <?= $menu['title'] ?> 
    <i class="fa fa-angle-down"></i> 
</a> 

Обратите внимание, что текст будет "Unknown", если $_SERVER['REQUEST_URI'] не равен ни одному ключу в массиве $menus.

+0

Скорее всего, ему понадобится другой URL-адрес в href для разных случаев :) – Anand

+1

@ И я удалил ответ, чтобы сделать его возможным – webNeat

+0

Спасибо. Я изучаю основы, и я не знаю, что это значит. :п –

1

Использование Switch Более читаемый и простой в обслуживании:

switch ($_SERVER['REQUEST_URI']) { 
    case "/jim.html" : ?> 
         <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">Inman jim <i class="fa fa-angle-down"></i></a><?php 
         break; 
    case "/bob.html" : ?> 
         <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">bob <i class="fa fa-angle-down"></i></a><?php 
         break; 
    case "/dereck.html" : ?> 
         <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">dereck <i class="fa fa-angle-down"></i></a><?php 
         break; 
    case "/maxamilamatronicus" : ?> 
         <a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#">maxamilamatronicus <i class="fa fa-angle-down"></i></a><?php 
         break; 

} 
0

Вы можете использовать переключатель случай в PHP. Что более эффективно. Посмотрите на пример здесь: http://www.w3schools.com/php/php_switch.asp

Также старайтесь хранить столько элементов, как показано ниже, вне PHP. Чтобы вы могли улучшить читаемость и эффективность.

<a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown"> 

Поэтому лучшим решением было бы:

<a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" 
    <?php switch ($_SERVER['REQUEST_URI']) { 
     case "/jim.html" : ?> 
          href="#">Inman jim <?php 
          break; 
     case "/bob.html" : ?> 
          href="#">bob <?php 
          break; 
     case "/dereck.html" : ?> 
           href="#">dereck <?php 
          break; 
     case "/maxamilamatronicus" : ?> 
          href="#">maxamilamatronicus <?php 
          break; 

    }?> 
<i class="fa fa-angle-down"></i></a> 
+0

Все замечательные ответы. Я новичок в php, так что это была огромная помощь. Благодаря! –

+0

Добро пожаловать :) Отметьте как ответ, если решение решает вашу проблему :) – Anand

+0

Я получаю синтаксическую ошибку, возвращенную в случае с bob –

0
<a class="btn btn-primary dropdown-toggle btn-gallery" data-toggle="dropdown" href="#"> 
<?php 
switch ($_SERVER['REQUEST_URI']) { 
     case '/jim.html': $a='Inman jim'; break; 
     case '/bob.html': $a='bob'; break; 
     case '/dereck.html': $a='dereck'; break; 
     case '/maxamilamatronicus': $a='maxamilamatronicus'; break; 
     default: $a=''; 
} 
echo $a; 
?> 
<i class="fa fa-angle-down"></i></a> 
Смежные вопросы