0

PHPステートメントでのORorの使用に関して、不可解な問題が発生しているようです。私のコードはこれです:||if

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

にどんな値を与えても$region、最初の if ループは常に「true」と評価されます$GoTo/spain/$region.phpこれを行う方法は他にもありますが、この方法が機能しない理由がわかりません。

4

5 に答える 5

4

@Fluffehが投稿した答えは正しいです。編集:@Findusの説明も正しいです。

怠惰になりたい場合は、次のようにできます。

if(in_array($region,array('ibiza','mallorca','menorca','...','..'))){}
于 2012-09-05T10:42:32.910 に答える
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 に答える
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 に答える
1

これは、ステートメント 'mallorca' (およびそれに続くステートメント) が true と評価されるためです。$region == "mallorca" のような比較を使用する必要があり、他のすべてについても同様です。

于 2012-09-05T10:42:25.380 に答える
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 に答える