多个if/else语句与foreach循环

Xhy*_*ynk 1 php foreach if-statement

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

我们维持我们做了一个网站没有创造,我们正在试图动态添加一些在某些页面侧边栏,并试图决定,如果有一个理由使用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 }
Run Code Online (Sandbox Code Playgroud)

这个加载到的侧边栏php文件在很多页面上,其中一些需要专门为它创建的div,其他页面根本不需要它,因此$rb_enabled.

有没有理由说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; }
Run Code Online (Sandbox Code Playgroud)

if语句有点多余$rb_enabled,但想知道是否有任何理由使用一种方式而不是另一种方式,即使它只是"如果你是下一个手牵着这个项目你宁愿接管哪个代码"如果那是唯一的理由.

完全开放一个新的想法!

Mik*_*ant 5

你已经拥有一个以URI为键的数组,为什么不使用array_key_exists()

if(array_key_exists($_SERVER['REQUEST_URI'], $RURLS)) {
    $rb_enabled = true;
    $rb_url = $RURLS[$_SERVER['REQUEST_URI']];
}
Run Code Online (Sandbox Code Playgroud)

无需遍历数组,或提供多个if或switch/case语句.随着URI数组大小的增加,此查找的性能不会降低(至少在合理范围内 - 如果你有一个占用大量内存的庞大数组,那可能会有问题.)