0

我似乎在使用OR||在 PHPif语句中遇到了一个神秘的问题。我的代码是这样的:

if ($region=='ibiza' || 'mallorca' || 'menorca' || 'andalucia' || 'basque' || 'cataluna' || 'centralspain' || 'greenspain' || 'pyrenees' || 'rioja' || 'valencia') {
    $GoTo = "/spain/".$region.".php";    
}

无论我赋予什么价值$region$GoTo总是以/spain/$region.php即第一个 if 循环总是评估为“真”的形式出现。还有其他方法可以做到这一点,但我不明白为什么这种方法不起作用。

4

5 回答 5

4

你想使用这样的 or 语句:

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...";
}
于 2012-09-05T10:40:35.223 回答
4

@Fluffeh 发布的答案是正确的。编辑:@Findus 的解释也是正确的。

如果你想偷懒,你可以这样做:

if(in_array($region,array('ibiza','mallorca','menorca','...','..'))){}
于 2012-09-05T10:42:32.910 回答
1

这是因为语句“mallorca”(以及以下语句)的计算结果为真。您应该使用比较,例如 $region == "mallorca",并且对所有其他类似。

于 2012-09-05T10:42:25.380 回答
1

您可以像这样简化您的代码:

<?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')
于 2012-09-05T10:50:02.980 回答
0

你有这样的 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";
}
于 2012-09-05T10:45:06.423 回答