以下代码是一个简单的select语句,它应该使用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创建数组,有人知道这里有什么问题吗?
由于
答案 0 :(得分:2)
尝试调用字段的内容,而不是整个结果数组:
$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(),您可以选择包含要重命名的第二个参数 由此产生的领域。
$这 - > DB-> select_sum( '年龄'); $ query = $ this-> db-> get('members');
//>生成:选择SUM(年龄)作为年龄FROM成员