PHP:如何从 list() 中获取总和?

PHP: how can I get sum from list()?

我花了很长时间才解决这个问题,所以决定寻求帮助。

我这里有一个 php 代码来计算总时数和分钟数。我知道我应该使用 php SUM(totalhours) 但我想尝试不同的方式。

$query_hours 获取列 'totalhours'

foreach($query_hours->result() as $row){
    $tt = $row->totalhours;     // 10:58 | 09:20 | 10:00
    list($tt1,$tt2) = explode(':', $tt);  //$tt1 = 10 | 09 | 10
}

现在的问题是如何得到 $tt1 的总和,即 29? 我试过 array_sum($tt1) 但我得到了一个错误,比如无效的参数,给定的字符串。在使用 array_sum() 之前已经进行了初始化 $thours = array($tt1) 但仍然出现另一个错误:3

既然你说你想按你现在的方式去做并且不想使用 Mysql SUM(),你可以使用一个变量来保存循环中的总和

$sum=0;
foreach($query_hours->result() as $row){
   $tt = $row->totalhours;     // 10:58 | 09:20 | 10:00
   list($tt1,$tt2) = explode(':', $tt);  //$tt1 = 10 | 09 | 10
   $sum+=$tt1;
 }
echo $sum;

像下面这样使用

$total=0;
foreach($query_hours->result() as $row){
   $tt = $row->totalhours;     // 10:58 | 09:20 | 10:00
   list($tt1,$tt2) = explode(':', $tt);  //$tt1 = 10 | 09 | 10
   $total+=$tt1;
 }
echo $total; //your result here

我认为这可能会解决您的问题,试试这个:

$sum=0;
foreach($query_hours->result() as $row){
   $tt = $row->totalhours;     // 10:58 | 09:20 | 10:00
   list($tt1,$tt2) = explode(':', $tt);  //$tt1 = 10 | 09 | 10
   $sum+=$tt1;
 }
echo $sum;

使用 array_sum 时出现什么错误?只要你给它一个数组,就不会有任何错误。

$sum = 0;
foreach($query_hours->result() as $row){
    $tt = $row->totalhours;     // 10:58 | 09:20 | 10:00
    $sum += array_sum(explode(':', $tt));  //$tt1 = 10 | 09 | 10
}