Php 如果或倍数
我试图查看mysql存储状态,看看它们是否符合我的代码所示的条件: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
$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)) {