【问题标题】:PHP: how can I get sum from list()?PHP:如何从 list() 中获取总和?
【发布时间】:2015-04-28 10:42:38
【问题描述】:

我花了相当长的时间来解决这个问题并决定寻求帮助。

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

$query_hours 获取列“总小时数”

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

【问题讨论】:

    标签: php list explode


    【解决方案1】:

    既然你说你想按你的方式做,不想使用 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;
    

    【讨论】:

    • 我的错,我之前做过同样的事情,只是我在 foreach 中放置了 $sum=0,难怪 $sum 总是返回最后一个值 (10) :3
    • 是的,如果你每次在循环中将它设置为 0,你肯定会得到:)
    • 我在为我的 NOOBility 哭泣 :'(
    • 不要为此出汗。这就是我们学习和改进的方式,现在你再也不会犯这个错误了:)
    【解决方案2】:

    像下面这样使用

    $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
    

    【讨论】:

      【解决方案3】:

      您在使用 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
      }
      

      【讨论】:

        【解决方案4】:

        我认为这可以解决你的问题,试试这个:

        $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;
        

        【讨论】:

          猜你喜欢
          • 2018-11-03
          • 2020-01-01
          • 1970-01-01
          • 2013-08-17
          • 1970-01-01
          • 2012-06-08
          • 2011-03-13
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多