在PHP if
语句中使用OR
或||
时,我似乎遇到了一个神秘的问题。我的代码是:
if ($region=='ibiza' || 'mallorca' || 'menorca' || 'andalucia' || 'basque' || 'cataluna' || 'centralspain' || 'greenspain' || 'pyrenees' || 'rioja' || 'valencia') {
$GoTo = "/spain/".$region.".php";
}
无论我给$region
什么值,$GoTo
总是作为/spain/$region.php
出现,即第一个if循环总是计算为"true"。我还有其他方法可以做到这一点,但我不明白为什么这种方法不起作用。
@Fluffeh发布的答案是正确的。编辑:@Findus的解释也是正确的。
如果你想懒惰,你可以这样做:
if(in_array($region,array('ibiza','mallorca','menorca','...','..'))){}
您想要使用这样的或语句:
if ($region=='ibiza'||$region=='mallorca'||$region=='menorca'....)
但在您的情况下,您可能希望使用in_array()
$locals=array(ibiza','mallorca','menorca','andalucia','basque','cataluna','centralspain','greenspain','pyrenees','rioja','valencia')
if (in_array($region, $locals)) {
$goto="something...";
}
这是因为语句"mallorca"(以及后面的语句)的计算结果为true。您应该使用一个比较,比如$region=="mallorca",并对所有其他的进行类似的比较。
您可以这样模拟代码:
<?php
$selectedRegions1 = array('ibiza','mallorca','menorca','andalucia','basque','cataluna', 'centralspain','greenspain','pyrenees','rioja','valencia');
$selectedRegions2 = array('brittany','burgundy','alps','aquitaine','loire','languedoc', 'paris','provence');
$selectedRegions3 = array('grancanaria','lapalma','lanzarote','tenerife');
$selectedRegions4 = array('atlas','essaouira','fez','marrakech');
if (in_array($region, $selectedRegions1 )) {
$GoTo = "/spain/".$region.".php";
}elseif(in_array($region,$selectedRegions2)) {
$GoTo = "/france/".$region.".php";
}elseif (in_array($region,$selectedRegions3)) {
$GoTo = "/canaries/".$region.".php";
}elseif (in_array($region,$selectedRegions4)) {
$GoTo = "/morocco/".$region.".php";
}
?>
代码的问题是您忘记了"||"之后的"$region==":
if ($region=='ibiza'|| $region=='mallorca'|| $region=='menorca'|| $region=='andalucia'|| $region=='basque'|| $region=='cataluna'|| $region=='centralspain'|| $region=='greenspain'|| $region=='pyrenees'|| $region=='rioja'|| $region=='valencia')
您已经编写了类似的if语句
if ($region=='ibiza'|| $region=='mallorca'|| $region=='menorca'|| $region=='andalucia'|| $region=='basque'|| $region=='cataluna'|| $region=='centralspain'|| $region=='greenspain'|| $region=='pyrenees'|| $region=='rioja'||$region=='valencia') {
$GoTo = "/spain/".$region.".php";
}