Функция PHP array_sum в codeigniter

#php #mysql #arrays #codeigniter

#php #mysql — сервер #массивы #codeigniter #mysql

Вопрос:

Следующий код представляет собой простой оператор 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;
  

результатом этого является «СУММА 0», но она должна быть равна 147 после суммирования всех значений в столбце период.

Следующий код работает, поэтому я не понимаю, почему массив будет чем-то отличаться от этого:

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

Я использую 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');
  

Цитирую из документов:

$this->db->select_sum();

Записывает часть «ВЫБЕРИТЕ СУММУ (поле)» для вашего запроса. Как и в случае с select_max(), вы можете дополнительно включить второй параметр для переименования результирующего поля.

$this-> db-> select_sum(‘возраст’); $query = $this-> db->get(‘участники’);
//> Выдает: ВЫБЕРИТЕ СУММУ (возраст) в качестве возраста ИЗ участников

Комментарии:

1. Может быть, вы можете использовать $this->db->select_sum('period') .