确定
所以我一直坚持这个问题,我确信有更优雅的方式。
我在数据库中有3列 -
Stand1 | Stand2 | Stand3
每列都有一个展位号(即D30)或'未分配'
我需要做的是计算为该客户分配了多少看台。
例如:
D30 |未分配|未分配将= 1
D30 | B30 | E30 = 3
到目前为止我的代码是
if ($row["stand1"] == 'Not Assigned') {
$stand1 = '0';
}
else {
$stand1 = '1';
}
if ($row["stand2"] == 'Not Assigned') {
$stand2 = '0';
}
else {
$stand2 = '1';
}
if ($row["stand3"] == 'Not Assigned') {
$stand3 = '0';
}
else {
$stand3 = '1';
}
然后我想我可以尝试计算分配了多少支架:
$standcount = $stand1 + $stand2 + $stand3
但是当我打印出来的时候(其他所有东西都在一个数组中,所以循环遍历每个客户)我得到的就是每个客户的总数为3个。
我尝试将数据保存到如下数组中:
$standcount = array($stand1, $stand2, $stand3);
但我得到了同样的结果。我认为foreach循环可能有效,但不知道该怎么做。
答案 0 :(得分:0)
我建议你:
NULL
,这样如果条目中没有提供任何值,您将拥有null
值而不是字符串(可以包含不同的字母,如你的情况)。之后,您只需对每个值执行isset()
检查。使用函数来避免代码重复(错误的主要来源),例如:
function check($value) {
return (isset($value)) ? 1 : 0;
}
$stand_1 = check($row["stand1"]);
$stand_2 = check($row["stand2"]);
$stand_3 = check($row["stand3"]);
如果您想要将字符串用作“未分配”或“NA”,则可以在字符串之间使用strcasecmp()
执行不区分大小写的检查,以防出于任何原因,值包含额外的空格或小写字母。
在这种情况下,检查功能将是:
function check($str) {
return (strcasecmp($str, "NA") == 0) ? 0 : 1;
}
$stand_1 = check($row["stand1"]);
$stand_2 = check($row["stand2"]);
$stand_3 = check($row["stand3"]);