使用||
(或)PHP或聲明||
我,我需要與同一個變量來比較如此多的價值,是否有更好的方式來寫更有效,如$city == -35 || -34 || -33
或更簡單,這樣我就不必重複變量名稱,因爲它是相同的變量只有值不斷變化。
<?php
if ($city == -35 || $city == -34 || $xcity == -33)
{
$region = "noindex";
}
?>
有什麼建議嗎?
使用||
(或)PHP或聲明||
我,我需要與同一個變量來比較如此多的價值,是否有更好的方式來寫更有效,如$city == -35 || -34 || -33
或更簡單,這樣我就不必重複變量名稱,因爲它是相同的變量只有值不斷變化。
<?php
if ($city == -35 || $city == -34 || $xcity == -33)
{
$region = "noindex";
}
?>
有什麼建議嗎?
您可以使用in_array()
if (in_array($city, array(-35, -34, -33))) {
$region = "noindex";
}
或者,如果他們是連續的(我suspec他們不是,這只是一個例子)
in_array($city, range(-35, -33))
是的。使用in_array
,
in_array($city, array(-35,-34,-33))
你可以使用:
if (in_array($city, array(-35, -34, -33))
假設$xcity
是一個錯字,
switch ($city)
{
case -35:
case -34:
case -33:
$region = "noindex";
break;
}
不知道爲什麼這不是公認的答案。雖然稍微比'in_array'建議冗長(而且我不確定這兩者的執行時間),但這是做OP所要求的「正確」方式。 – 2013-09-27 07:59:20
使用關聯數組。 in_array將數組中的每個元素與你的var進行比較。關聯數組使用散列表。它更快。
$cities = array(-33 => 1, -34 => 1, -35 => 1);
if (isset($cities[$city])) {
$region = "noindex";
}
如果'$ city'是-36,怎麼辦?這種方法會發出通知。最好查看'isset()' – jprofitt 2012-03-16 01:45:21
@jprofitt你是對的。我更新我的答案。 – 2012-03-16 01:48:09
對於這種特殊情況,'$ city> -36 && $ city <-32' :) – Ryan 2012-03-16 01:08:17