Сократить операторы if / else

Я написал очень простое заявление, чтобы проверить URL. Он прекрасно работает, но есть ли способ урезать его?

    <?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

Решение

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

<?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 массив.

2

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

использование 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;

}
1

Вы можете использовать переключатель регистра в 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

<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>
0
По вопросам рекламы [email protected]