Оптимизация селектора меню PHP

#php

#php

Вопрос:

Я сделал свою домашнюю работу, и код работает и делает то, что я хочу.

Цель заключается в следующем :

У меня есть меню с 6 опциями. Когда я нажимаю на одну опцию, эта опция остается подсвеченной, затем остальные отключаются, и это должно происходить последовательно с одной и каждой из опций при нажатии. Я пришел к следующему коду для управления верхним меню моего приложения, и, как я уже сказал, он работает и делает то, что я хочу, безупречно. Но меня беспокоит следующее. Поскольку я не настолько разбираюсь в php-программировании вообще, все еще учусь, я хочу знать, правильный ли это способ сделать это или это худший? также можно ли оптимизировать этот код? Я пытался использовать switch, но с треском провалился T_T .

заранее спасибо 😉

приветствую JotaDG

—————код———————

 <ul class="floating left">
<?php
                if ($Section=='1'){?>
                    <li><a class="on" href="<?php echo $StartUpUrl;?>">Start</a></li>
                    <li><a href="<?php echo $urlListFAQ;?>">FAQ</a></li>
                    <li><a href="<?php echo $urlHelp;?>">Help</a></li>
                    <li><a href="<?php echo $urlDocs;?>">Docs</a></li>
                    <li><a href="<?php echo $urlNews;?>">News</a></li>
                    <li><a href="<?php echo $urlGuide;?>">Guide</a></li>
                <?php }
                    elseif ($Section== '2'){?>
                            <li><a href="<?php echo $StartUpUrl;?>">Start</a></li>
                            <li><a class="on" href="<?php echo $urlListFAQ;?>">FAQ</a></li>
                            <li><a href="<?php echo $urlHelp;?>">Help</a></li>
                            <li><a href="<?php echo $urlDocs;?>">Docs</a></li>
                            <li><a href="<?php echo $urlNews;?>">News</a></li>
                            <li><a href="<?php echo $urlGuide;?>">Guide</a></li>
                <?php }
                    elseif ($Section== '3'){?>
                            <li><a href="<?php echo $StartUpUrl;?>">Start</a></li>
                            <li><a href="<?php echo $urlListFAQ;?>">FAQ</a></li>
                            <li><a class="on" href="<?php echo $urlHelp;?>">Help</a></li>
                            <li><a href="<?php echo $urlDocs;?>">Docs</a></li>
                            <li><a href="<?php echo $urlNews;?>">News</a></li>
                            <li><a href="<?php echo $urlGuide;?>">Guide</a></li>
                    <?php }
                        elseif ($Section== '4'){?>
                                <li><a href="<?php echo $StartUpUrl;?>">Start</a></li>
                                <li><a href="<?php echo $urlListFAQ;?>">FAQ</a></li>
                                <li><a href="<?php echo $urlHelp;?>">Help</a></li>
                                <li><a class="on" href="<?php echo $urlDocs;?>">Docs</a></li>
                                <li><a href="<?php echo $urlNews;?>">News</a></li>
                                <li><a href="<?php echo $urlGuide;?>">Guide</a></li>
                    <?php }
                        elseif ($Section== '5'){?>              
                                    <li><a href="<?php echo $StartUpUrl;?>">Start</a></li>
                                    <li><a href="<?php echo $urlListFAQ;?>">FAQ</a></li>
                                    <li><a href="<?php echo $urlHelp;?>">Help</a></li>
                                    <li><a href="<?php echo $urlDocs;?>">Docs</a></li>
                                    <li><a class="on" href="<?php echo $urlNews;?>">News</a></li>
                                    <li><a href="<?php echo $urlGuide;?>">Guide</a></li>
                        <?php }
                            elseif ($Section== '6'){?>
                                        <li><a href="<?php echo $StartUpUrl;?>">Start</a></li>
                                        <li><a href="<?php echo $urlListFAQ;?>">FAQ</a></li>
                                        <li><a href="<?php echo $urlHelp;?>">Help</a></li>
                                        <li><a href="<?php echo $urlDocs;?>">Docs</a></li>
                                        <li><a href="<?php echo $urlNews;?>">News</a></li>
                                        <li><a class="on" href="<?php echo $urlGuide;?>">Guide</a></li>
            <?php }?> 
        </ul>   
  

Ответ №1:

Я хотел бы сделать таким образом

 <?php 
//define an array of itmes I just taken three define all items
$menu=array(
            1=> array('Start'=>'http://someurl'),
            2=> array('FAQ'=>'http://faqurl'),
            3=>array('Help'=>'http://helpurl')
           );

foreach($menu as $key => $menuArray)
{
     foreach ($menuArray as $title => $url)
     {
     ?>
        <li><a <?php if ($Section==$key ) { echo 'class="on"';}?> href="<?php echo $url;?>"><?php echo $title; ?></a></li>
     <?php
     }
}
?>
  

Если позже будет добавлен или обновлен какой-либо URL или любое меню, вам не придется снова искать всю логику, просто перейдите и добавьте эти обновления в $menu массив.

Комментарии:

1. Sweeeeet. Многим этот способ больше нравится, чем мой. Нужно подумать еще ! 🙂

2. Вау, быстрый и потрясающий ответ! Я реализую это таким образом, о боже, так многому нужно научиться ^_^. спасибо !!… упс для голосования требуется репутация 15 :/ , извините…

Ответ №2:

Возможно, это более эффективный способ сделать это, но вот начало:

 <ul class="floating left">
    <li><a <?php echo ($section == 1) ? 'class="on"' : '';?> href="<?php echo $StartUpUrl;?>">Start</a></li>
    <li><a <?php echo ($section == 2) ? 'class="on"' : '';? href="<?php echo $urlListFAQ;?>">FAQ</a></li>
    <li><a <?php echo ($section == 3) ? 'class="on"' : '';?> href="<?php echo $urlHelp;?>">Help</a></li>
    <li><a <?php echo ($section == 4) ? 'class="on"' : '';?> href="<?php echo $urlDocs;?>">Docs</a></li>
    <li><a <?php echo ($section == 5) ? 'class="on"' : '';?> href="<?php echo $urlNews;?>">News</a></li>
    <li><a <?php echo ($section == 6) ? 'class="on"' : '';?> href="<?php echo $urlGuide;?>">Guide</a></li>           
</ul>