Php 多个if/else语句与foreach循环

Php 多个if/else语句与foreach循环,php,if-statement,foreach,Php,If Statement,Foreach,我只是想弄清楚,从长远来看,哪种方案更好,以及这两种方案之间是否存在性能差异 我们正在维护一个我们没有创建的站点,我们正在尝试在某些页面的侧栏中动态添加一些内容,并尝试确定是否有理由使用foreach循环或多个if/else语句 我们将得到比这里显示的6个页面多得多的页面,因此性能可能是一个值得关注的问题 foreach循环如下所示: $rb_enabled = false; $RURLs = array( '/cambridge.php' => 'cambridge',

我只是想弄清楚,从长远来看,哪种方案更好,以及这两种方案之间是否存在性能差异

我们正在维护一个我们没有创建的站点,我们正在尝试在某些页面的侧栏中动态添加一些内容,并尝试确定是否有理由使用foreach循环或多个if/else语句

我们将得到比这里显示的6个页面多得多的页面,因此性能可能是一个值得关注的问题

foreach循环如下所示:

$rb_enabled = false;

$RURLs = array(
    '/cambridge.php' => 'cambridge',
    '/milton.php' => 'milton',
    '/kitchener_waterloo.php' => 'kw',
    '/hamilton_dundas.php' => 'hd',
    '/oakville.php' => 'oakville',
    '/brantford.php' => 'brantford'
);

foreach( $RURLs as $rurl => $engine_location ){
    if($_SERVER['REQUEST_URI'] == $ru){
        $rb_url == $engine_location;
        $rb_enabled == true;
    } 
}

if($rb_enabled === true){ //create a div with information based on engine location }
加载到其中的边栏php文件位于许多页面上,其中一些页面需要专门为其创建此div,其他页面则根本不需要此div,因此启用了
$rb_

foreach循环比这更好还是更差,有什么原因吗

if($_SERVER['REQUEST_URI'] == '/cambridge.php'){ $rb_url = 'cambridge'; $rb_enabled = true; }
else if($_SERVER['REQUEST_URI'] == '/milton.php'){ $rb_url = 'milton'; $rb_enabled = true; }
else if($_SERVER['REQUEST_URI'] == '/kitchener_waterloo.php'){ $rb_url = 'kw'; $rb_enabled = true; }
else if($_SERVER['REQUEST_URI'] == '/hamilton_dundas.php'){ $rb_url = 'hd'; $rb_enabled = true; }
else if($_SERVER['REQUEST_URI'] == '/oakville.php'){ $rb_url = 'oakville'; $rb_enabled = true; }
else if($_SERVER['REQUEST_URI'] == '/brantford.php'){ $rb_url = 'brantford'; $rb_enabled = true; }
if语句与启用的
$rb_
有点多余,但是想知道是否有任何理由使用一种方法而不是另一种方法,即使这只是“如果你是下一个参与此项目的人,你更愿意接管哪种代码”,如果这是唯一的原因


也完全接受一个新的想法

您应该使用
switch/case
语法来满足您的要求:

switch( $_SERVER['REQUEST_URI'] ) {
    case '/milton.php':
       $rb_url = 'milton';
       $rb_enabled = true;
       break;

    ....
}

您应该使用
switch/case
语法来满足您的要求:

switch( $_SERVER['REQUEST_URI'] ) {
    case '/milton.php':
       $rb_url = 'milton';
       $rb_enabled = true;
       break;

    ....
}

您已经有了一个URI为key的数组,为什么不使用
array\u key\u exists()


不需要在数组中循环,也不需要提供多个if或switch/case语句。此查找的性能不会随着URI数组大小的增加而降低(至少在合理范围内-如果您有一个占用大量内存的巨大数组,这可能是一个问题。)

您已经有一个以URI为键的数组,那么为什么不使用
array\u key\u exists()

不需要在数组中循环,也不需要提供多个if或switch/case语句。此查找的性能不会随着URI数组大小的增加而降低(至少在合理范围内-如果您有一个占用大量内存的巨大数组,这可能是一个问题。)

一行:

list($rb_enabled,$rb_url) = ($url=$RURLs[$_SERVER['REQUEST_URI']])? array(true,$url) : null ;
一行:

list($rb_enabled,$rb_url) = ($url=$RURLs[$_SERVER['REQUEST_URI']])? array(true,$url) : null ;

我只希望在没有定义良好的启发式/映射可以应用的情况下,对于固定集这样的情况,使用if/开关。(如果只有少数特殊情况,即执行附加操作,我会单独处理。)我已经考虑过这一点,但它比if/else语句更具代码性,它仍然需要循环处理。虽然不是一个坏的建议,但它与IF/Eff.+大致相当。1,但我将推荐其他人如何使用:)我只喜欢在没有定义良好的启发式/映射可以应用的情况下,对固定集这样的情况使用if/开关。(如果只有少数特殊情况,即执行附加操作,我会单独处理。)我已经考虑过这一点,但它比if/else语句更具代码性,它仍然需要循环处理。虽然不是一个坏的建议,但它与IF/Eff.+大致相当。1,但我将推荐其他人使用:)我相信最终数组将在合理范围内,所以我将继续使用它。谢谢,接受了!我相信末端阵列将在合理范围内,所以我将继续使用它。谢谢,接受了!