Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/40.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 哪个显示活动菜单项更快?开关&x2B;一堆回声还是一堆if语句?_Php_If Statement_Menu_Switch Statement - Fatal编程技术网

Php 哪个显示活动菜单项更快?开关&x2B;一堆回声还是一堆if语句?

Php 哪个显示活动菜单项更快?开关&x2B;一堆回声还是一堆if语句?,php,if-statement,menu,switch-statement,Php,If Statement,Menu,Switch Statement,还是有更好的办法 切换+一组回声: switch($currentpage) { case 'index.php': $indexclass=' active'; $otherpageclass=''; break; case 'otherpage.php': $indexclass=''; $otherpageclass=' active'; break; } 然后,在li类中,我将简单地回显$indexclass作为索引,$otherpage

还是有更好的办法

切换+一组回声:

switch($currentpage) {
case 'index.php':
    $indexclass=' active';
    $otherpageclass='';
    break;
case 'otherpage.php':
    $indexclass='';
    $otherpageclass=' active';
    break;
}
然后,在li类中,我将简单地回显$indexclass作为索引,$otherpageclass作为其他页面

另一个选项是只设置$currentpage变量并执行以下操作:

<li class="<?php if($currentpage='index.php'){echo ' active';}?>">whatever</li>
<li class="<?php if($currentpage='otherpage.php'){echo ' active';}?>">whatever</li>

我认为速度应该与这个决定无关,因为您最多只谈论微观优化


做最有利于代码可读性和可维护性的事情。在我看来,我倾向于更倾向于使用switch语句的方法,因为对我来说,这在显示逻辑和实际显示之间提供了一个更清晰的分离。

我认为速度应该与这个决定无关,因为你最多谈论的是微优化


做最有利于代码可读性和可维护性的事情。在我看来,我倾向于更倾向于使用switch语句的方法,因为对我来说,这在显示逻辑和实际显示之间提供了更清晰的分离。

我会选择一种性能更低的解决方案:对象。我将创建一个类,以便能够通过以下方式定义菜单:

$menu = new Menu($currentpage);
$menu->addItem('index.php', 'Home');
$menu->addItem('otherpage.php', 'Other Page');
echo $menu->html();

确切的代码应该不难理解:一个带有项目的私有数组和一个封装渲染的html()方法。

我会选择一个性能更低的解决方案:对象。我将创建一个类,以便能够通过以下方式定义菜单:

$menu = new Menu($currentpage);
$menu->addItem('index.php', 'Home');
$menu->addItem('otherpage.php', 'Other Page');
echo $menu->html();

确切的代码应该不难理解:一个带有项目的私有数组和一个html()方法来封装渲染。

您可能需要1000万个菜单项才能注意到性能差异。您可以自己对其进行基准测试。。。但对于30个左右的菜单项,我看不出你节省的时间超过几微秒。此外,如果您所做的只是根据所处的页面更改css类,那么您可能希望在客户端使用Javascript来完成此操作您刚刚花了比在CPU周期上节省更多的时间来编写此问题,即使站点运行了一个世纪。请考虑可读性,而不要考虑性能,早期优化是万恶之源。LOL@Sammitch-抱歉这个愚蠢的问题。我还在学习,每次我回到我已经写了3个月,6个月的代码,12个月前,我总是发现我本可以做得更好的事情——尽量减少这一点,也许是看得太近了一点。你可能需要1000万个菜单项才能注意到性能差异。你可以自己进行基准测试。。。但对于30个左右的菜单项,我看不出你节省的时间超过几微秒。此外,如果您所做的只是根据所处的页面更改css类,那么您可能希望在客户端使用Javascript来完成此操作您刚刚花了比在CPU周期上节省更多的时间来编写此问题,即使站点运行了一个世纪。请考虑可读性,而不要考虑性能,早期优化是万恶之源。LOL@Sammitch-抱歉这个愚蠢的问题。我还在学习,每次我回到我3个月、6个月、12个月前写的代码中,我总是发现我本可以做得更好的事情——尽量减少这一点,也许是看得太近了一点。