【问题标题】:sum of array result as total数组结果的总和
【发布时间】:2021-10-22 18:57:55
【问题描述】:

我是 PHP 初学者,我有 MySQL 查询给我这样的数组输出:

0 10.8 0 0 37.2 0 0 106 0 0 0 0 0

代码:

$query1 = $this->db->query('SELECT  *, sum(`lines_done`) as 
         sum_lines_done FROM `lines` where id = ' . $id_print . ' ');

$data1= $query1->result();

$tool_all= ($data1[0]->sum_done)
print_r ($tool_all); 

我希望这个数组值的总和等于 154 我该怎么做。

【问题讨论】:

  • 如果可以的话最好在 MySQL 中使用SUM,它的性能会更好。
  • 您好,欢迎来到 SO!请转至tour,阅读help centerhow-to-ask 页面。
  • 它给了我输出 0 10.6 0 0 37.4 0 0 106 0 0 0 0 0

标签: php sql arrays


【解决方案1】:

您可以使用 MySQL 的函数 SUM() 求和。您也可以使用 PHP 的函数 array_sum 对数组的值求和。

MySQL 示例:

$query = 'SELECT SUM(your_desired_column) AS total FROM your_table';

PHP 示例:

$data = [1, 2, 3];
$total = array_sum($data);
echo $total

// 输出:6

【讨论】:

  • 谢谢,但它给了我与我认为的字符串相同的输出 0 10.8 0 0 37.2 0 0 106 0 0 0 0 0
  • 当您 print_r 或 var_dump 数组显示什么?
  • 现在添加此代码后:$tool_all = array($tool_all); $总和 = 0; foreach($tool_all as $key=>$value) { $sum+= $value; } print_r ($tool_all);输出如下 Array ( [0] => 0 ) Array ( [0] => 10.6 ) Array ( [0] => 0 ) Array ( [0] => 0 ) Array ( [0] => 37.4 ) Array ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 106 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] = > 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 ) 但不是值的总和
  • 请问我怎样才能得到总和?
  • 你为什么要这样做 $tool_all = array($tool_all); ? $tool_all 在执行此操作之前是一个数组还是一个字符串?
【解决方案2】:

您可以通过以下方法轻松完成

  1. 只要写一个查询表单SUM就好了
SELECT 
    SUM(your_column) AS Total
FROM
    your_table;
  1. 使用 for 循环获取所有数据总和
foreach ($data1 as $d) {
     $total = $total+$d;
}

方法2是一个概念打磨和享受

【讨论】:

  • 谢谢,但它给了我与我认为的字符串相同的输出 0 10.8 0 0 37.2 0 0 106 0 0 0 0 0
  • 现在添加此代码后:$tool_all = array($tool_all); $总和 = 0; foreach($tool_all as $key=>$value) { $sum+= $value; } print_r ($tool_all);输出如下 Array ( [0] => 0 ) Array ( [0] => 10.6 ) Array ( [0] => 0 ) Array ( [0] => 0 ) Array ( [0] => 37.4 ) Array ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 106 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 ) 数组 ( [0] = > 0 ) 数组 ( [0] => 0 ) 数组 ( [0] => 0 ) 但不是值的总和
【解决方案3】:

解决方案:

$tool_all= ($data1[0]->sum_lines_done)
print_r ($tool_all); 

解释:

您有一个lines_done 字段,它是一个数字,您将sum 转换为sum_lines_done。您使用了前者,但想使用后者。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-09-10
    相关资源
    最近更新 更多