Php 如果或倍数

Php 如果或倍数,php,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 $stat

我试图查看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="";
               }

无论发生什么,它都在往西返回:\n我试着将class='s改为=='s,我试着将它们分开,或者放在自己的括号中,例如if($stater='ca')|($stater='nm'))等等,但仍然没有任何效果。任何帮助都将不胜感激。

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

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


您是否尝试过将
切换到
|

因为在IF块中使用的是“=”而不是“=”

注:此代码看起来更好:

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

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

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

你也应该考虑一下:


在if语句中,应始终使用两个==,而不是一个=。One=赋值,使其为真

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

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

问题是您使用的是
=
而不是
=
,因此
$stater
总是以
'WA'
结尾。也就是说,使用数组和数组中的
)可能更干净:

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

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

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

您肯定将
=
(设置)与
==
(比较)混淆了

无论如何,我可能会在您的情况下使用此选项,这更易于阅读和编辑:

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

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

这里还有一个非常规的答案:

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

比超指定数组/列表检查更紧凑。在这种和其他情况下,对照允许值列表进行检查通常就足够了。

在中间,您开始使用
=
赋值,而不是
=
比较运算符。为此,可以在_array()中使用
来避免此错误。CA在数组中是大写的
if (stristr('WA BC CA NV AZ ID OR UT MT NM', $stater)) {