在php中添加多个变量的总和

时间:2017-12-14 15:36:14

标签: php foreach sum

确定

所以我一直坚持这个问题,我确信有更优雅的方式。

我在数据库中有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循环可能有效,但不知道该怎么做。

1 个答案:

答案 0 :(得分:0)

我建议你:

  1. 将列的默认值设置为NULL,这样如果条目中没有提供任何值,您将拥有null值而不是字符串(可以包含不同的字母,如你的情况)。之后,您只需对每个值执行isset()检查。
  2. 使用函数来避免代码重复(错误的主要来源),例如:

    function check($value) {
        return (isset($value)) ? 1 : 0;
    }
    $stand_1 = check($row["stand1"]);
    $stand_2 = check($row["stand2"]);
    $stand_3 = check($row["stand3"]);
    
  3. 如果您想要将字符串用作“未分配”或“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"]);