【问题标题】:Using PHP to calculate totals from an array使用 PHP 计算数组的总数
【发布时间】:2014-09-08 06:34:29
【问题描述】:

这不是一个合适的论坛,因为我不是程序员并且会犯一些简单的错误,但我找不到这个总和的答案。 我有一个名为 on0 的表列,其中包含选项 1、选项 2、选项 3 或选项 4 其中每一个的值为 2、5、10 或 20。 我正在尝试选择所有行并将值更改为一个数字,然后使用 array_sum 来汇总列值。 我已经以几种方式编写了它,下面是一个示例,但是我尝试总计的每种方式要么是数组中的最后一个值,要么是零。我非常感谢任何关于我做错了什么的意见:

<?php
require_once('includes/connection.inc.php');
$conn = dbConnect('read', 'pdo');
$sql = 'SELECT on0 FROM members ORDER BY on0 ASC';
$result = array();
  foreach ($conn->query($sql) as $row) {
    if ($row['on0']=="Option 1") {$result[] = 2;}
    elseif ($row['on0']=="Option 2") {$result[] = 5;}
    elseif ($row['on0']=="Option 3") {$result[] = 10;}
    elseif ($row['on0']=="Option 4") {$result[] = 20;}
  }
  $tote = array($result);
echo "Value: $" . array_sum($tote) . ".00" . "\n"; 
?>

此代码在 PHP 中产生 $0.00 如果我删除 [] 所以它是 {$result = 2;} 等。结果是最后一个值,即:$20.00 我还尝试将结果放在引号中,如 {$result[] = '2';} 和 "2"

【问题讨论】:

    标签: php arrays pdo


    【解决方案1】:

    我认为您不需要数组
    主要问题是+= 而不是=

    <?php
    require_once('includes/connection.inc.php');
    $conn = dbConnect('read', 'pdo');
    $sql = 'SELECT on0 FROM members ORDER BY on0 ASC';
    $result = 0;
      foreach ($conn->query($sql) as $row) {
        if ($row['on0']=="Option 1") {$result += 2;}
        elseif ($row['on0']=="Option 2") {$result += 5;}
        elseif ($row['on0']=="Option 3") {$result += 10;}
        elseif ($row['on0']=="Option 4") {$result += 20;}
      }
    echo "Value: $" . $result . ".00" . "\n"; 
    ?>
    

    【讨论】:

    • 感谢您的解决方案掩码和 Barmar。我没有意识到我追求的东西过于复杂 - 竖起大拇指!
    【解决方案2】:

    您不需要将$result 包装在另一个数组中。它已经是一个数组。所以你可以这样做:

    echo "Value: $" . array_sum($result) . ".00" . "\n"; 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-07-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多