if或倍数

时间:2011-05-25 19:57:26

标签: php

我正在尝试查看mysql存储状态,看看它们是否符合我的代码所在的条件:

$stater = $this->state;
if ($stater == 'WA' OR 
$stater == 'BC' OR 
$stater == 'CA' OR
 $stater == 'NV' OR 
$stater == 'AZ' OR 
$stater == 'ID' OR 
$stater == 'OR' OR 
$stater == 'UT' OR 
$stater == 'MT' OR 
$stater == 'NM' OR 
$stater = 'wa' OR 
$stater = 'bc' OR 
$stater = 'CA' OR 
$stater = 'nv' OR 
$stater = 'az' OR 
$stater = 'id' OR 
$stater = 'or' OR 
$stater = 'ut' OR 
$stater = 'mt' OR 
$stater = 'nm'){               
                 $division = "West";
               }
           else{
           $division="";
               }

无论如何都会向西返回:\我尝试将='更改为=='s我尝试将每个或者分成自己的括号ex if(($ stater ='ca')||($ stater ='nm'))等但仍然没有任何效果。任何帮助将不胜感激

8 个答案:

答案 0 :(得分:7)

问题在于您使用的是=而不是==,因此$stater始终以'WA'结尾。也就是说,使用数组和in_array()可能更清晰:

$west = array('WA', 'BC', 'CA', ...);
if (in_array($stater, $west)) {
    $division = 'west';
}

答案 1 :(得分:5)

您应该使用=====进行比较 此外,对于您的情况,此代码将更方便:

$stater = $this->state;
$states = array('wa',
                'bc',
                'ca',
                'nv',
                'az',
                'id',
                'or',
                'ut',
                'mt',
                'nm');

if (in_array(strtolower($stater), $states))
{
    $division = "West";
}
else
{
    $division = "";
}

答案 2 :(得分:1)

因为您在IF块中使用'='而不是'=='。

PS。这段代码看起来更好:

$stater = $this->state;
$states = array('WA', 'BC', 'CA', ...);  //add all options

$division = in_array($stater, $states) ? 'West' : '';

答案 3 :(得分:0)

等于运算符是==,而不是=

设置变量始终返回true,因此默认情况下,您的第$stater = 'wa'行将为整个表达式返回true。

您是否尝试将OR切换为||

答案 4 :(得分:0)

您混淆了===$stater = 'wa'$stater设置为'wa'并将其评估为布尔值,始终返回true。

另外,您应该真正考虑将switch statementstrtoupper结合使用:

switch(strtoupper($this->state)) {
case 'WA':
case 'BC':
case 'CA':
case 'NV':
    $division = "West";
    break;
default:
    $division="";
}

答案 5 :(得分:0)

在if语句中,您应该始终使用两个==,而不是一个=。 One =分配值,这使其成立。

但是,在这种特殊情况下,我会做其他事情:

if (in_array($starter, array('WA','BC',...))) { ... }

答案 6 :(得分:0)

你肯定=(设置)与==混淆(比较)。

无论如何,我可能会在你的情况下使用它,这更容易阅读和编辑:

$valid_states = explode(',', 'WA,BC,CA,NV,AZ,ID,UT,MT,NM');

if (in_array(strtoupper($this->state), $valid_states)) {
    $division = "West";
} else {
    $division = "";
}

答案 7 :(得分:0)

这里也有一个非传统的答案:

if (stristr('WA BC CA NV AZ ID OR UT MT NM', $stater)) {

比过度特定的阵列/列表检查有点紧凑。在这个和其他情况下,检查允许值列表通常就足够了。