【问题标题】:PHP array_sum function in codeignitercodeigniter 中的 PHP array_sum 函数
【发布时间】:2011-10-17 10:24:32
【问题描述】:

以下代码是一个简单的选择语句,应该使用 array_sum 函数返回一个值。结果应该存储在一个数组中,然后在 SUM 函数中相加:

$this->db->select('period')
     ->from('calcdata');

$query = $this->db->get()->result_array();
$query = array_sum($query);

echo "SUM " . $query . "\n" ;
return $query;

结果是“SUM 0”,但在将期间列中的所有值相加后,它应该是 147。

以下代码有效,所以我不明白为什么数组与此有任何不同:

$a = array(2, 4, 6, 8);
echo "sum(a) = " . array_sum($a) . "\n";

我正在使用 codeigniter 创建数组,有人知道这里出了什么问题吗?

谢谢

【问题讨论】:

    标签: php mysql arrays codeigniter


    【解决方案1】:

    尝试调用字段的内容,而不是整个结果数组:

    $this->db->select('period')->from('calcdata');
    
    $query = $this->db->get();
    
    $period_array = array();
    foreach ($query->result_array() as $row)
    {
      $period_array[] = intval($row['period']); //can it be float also?
    }
    $total = array_sum($period_array);
    

    更新:

    @uzsolt 是对的,我差点忘了 Active Record 类中有一个专用函数 select_sum();您可能也想尝试一下,例如

    $this->db->select_sum('period')->get('calcdata');
    

    引用docs:

    $this->db->select_sum();

    为您的查询写入“SELECT SUM(field)”部分。与 select_max(),您可以选择包含第二个参数来重命名 结果字段。

    $this->db->select_sum('age'); $query = $this->db->get('members');
    //> 产生:SELECT SUM(age) as age FROM members

    【讨论】:

    • 也许你可以使用$this->db->select_sum('period')
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-09-20
    • 2019-03-08
    • 2011-07-19
    • 1970-01-01
    • 1970-01-01
    • 2012-10-02
    • 1970-01-01
    相关资源
    最近更新 更多