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
,但想知道是否有任何理由使用一种方式而不是另一种方式,即使它只是"如果你是下一个手牵着这个项目你宁愿接管哪个代码"如果那是唯一的理由.
完全开放一个新的想法!
你已经拥有一个以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数组大小的增加,此查找的性能不会降低(至少在合理范围内 - 如果你有一个占用大量内存的庞大数组,那可能会有问题.)