PHP如果声明带OR

时间:2012-09-05 10:39:14

标签: php if-statement logical-operators

在PHP OR语句中使用||if似乎有一个神秘的问题。我的代码是这样的:

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

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

5 个答案:

答案 0 :(得分:4)

你想使用这样的语句:

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...";
}

答案 1 :(得分:4)

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

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

if(in_array($region,array('ibiza','mallorca','menorca','...','..'))){}

答案 2 :(得分:1)

这是因为语句'mallorca'(以及后面的语句)的计算结果为true。 你应该使用比较,比如$ region ==“mallorca”,以及所有其他比较。

答案 3 :(得分: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')

答案 4 :(得分:0)

你写了这样的语句

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";
}