lmpearce1
lmpearce1

Reputation: 179

PHP array_sum function in codeigniter

The following code is a simple select statement that should use the array_sum function to return a value. The result should be getting stored in an array and then getting added up in the SUM function:

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

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

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

the result of this is "SUM 0" but it should be 147 after adding all values up in the period column.

The following code works so i don't understand why the array would be any different from this:

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

I am using codeigniter to create the arrays, does anyone know what is wrong here?

Thanks

Upvotes: 0

Views: 6154

Answers (1)

Damien Pirsy
Damien Pirsy

Reputation: 25445

Try calling the content of the field instead, not of the whole result array:

$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 is right, I almost forgot there's a dedicated function in the Active Record class, select_sum(); you might want to try that out also, something like

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

Quoting from the docs:

$this->db->select_sum();

Writes a "SELECT SUM(field)" portion for your query. As with select_max(), You can optionally include a second parameter to rename the resulting field.

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

Upvotes: 3

Related Questions