2011-10-17 96 views
0

以下代碼是一個簡單的select語句,應該使用array_sum函數返回一個值。結果應該得到存儲在數組中,然後在SUM函數獲取添加了:codeigniter中的PHP array_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"; 

我使用笨創建陣列,沒有人知道這裏有什麼問題?

感謝

回答

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

UPDATE:

@uzsolt是正確的,我差點忘了還有一個Active Record類中的專用函數select_sum();你可能想嘗試了這一點也是,像

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

docs報價:

$this->db->select_sum();

寫一個 「SELECT SUM(場)」 您所查詢的部分。與 select_max()一樣,您可以有選擇地包含第二個參數,以重命名產生的字段 。

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

+0

正是我需要的,謝謝! – lmpearce1

+1

也許你可以使用'$ this-> db-> select_sum('period')'。 – uzsolt