#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')
.