我正在尝试做一些简单的事情 - 将值与数组中的项进行比较,然后根据比较运行条件。
这是我的数组:
$states = ['AL','AR','CT','DE','FL','GA','IL','IN','IA','KS','KY','LA','ME','MD','MA','MI','MN','MS','MO','NE','NH','NJ','NY','NC','ND','OH','OK','PA','RI','SC','SD','TN','TX','VT','VA','WV','WI'];
这是我的foreach函数的其余代码:
$region = '';
$array_length = count($states);
foreach($states as $state_item){
if($state_item == $state) {
$region = 'E';
} else {
$region = 'W';
}
}
echo $region;
到目前为止,我的代码只能成功地进入我的条件的ELSE部分并打印出W.所以它基本上甚至不计算IF部分。自从我完成PHP以来已经有很长一段时间了。如果有更好的方法可以提醒我/请更正我。
$state
正在通过查询从数据库中提取并正常运行。
结束使用带有声明为$states = array(...)
的数组的FOREACH循环,以免它向我抛出服务器错误(500)。
答案 0 :(得分:3)
您的代码存在问题,即$state_item == $state
为true
且$region
为E
后,foreach循环会继续运行。下一次迭代$state_item == $state
为false
,$region
将被覆盖为W
。
要修复它,请使用您的代码:
$region = 'W';
foreach($states as $state_item){
if($state_item == $state) {
$region = 'E';
break; // stop here
}
}
更好的方法:
if (in_array($state, $states)) {
$region = 'E';
} else {
$region = 'W';
}
答案 1 :(得分:1)
对于像这样的简单案例,我更喜欢三元运算符:
$region = in_array($state, $states) ? 'E' : 'W';
答案 2 :(得分:-1)
而不是循环,你可以直接使用三元运算符:
$region = in_array($state, $states) ? 'E' : 'W';