2016-06-07 33 views
0

我正在从数据库中提取具有需要发送到视图以创建图表的日期的数据。几个月可能没有,我需要他们的时候我在我的控制器print_r的数据是用零值填充丢失的数组元素Codeigniter

Array ([0] => stdClass Object ([no_payments] => 1 [total_payment_amount] => 450 [year] => 2016 [month] => 1) [1] => stdClass Object ([no_payments] => 5 [total_payment_amount] => 1162 [year] => 2016 [month] => 5) [2] => stdClass Object ([no_payments] => 2 [total_payment_amount] => 1700 [year] => 2016 [month] => 6)) 

我如何填写要与0

型号

function get_chart_data() 
{ 
    $this->db->order_by('month','asc'); 
    $this->db->select('COUNT(*) as no_payments, SUM(amount) as total_payment_amount, YEAR(`date_paid`) AS year, MONTH(`date_paid`) AS month'); 
    $this->db->group_by(array("year", "month")); 
    $this->db->where('tbl_payments.payment_type', "PAYMENT"); 
    return $this->db->get('tbl_payments'); 
} 

自动填充交易丢失月份和零数据即数据要

Array ([0] => stdClass Object ([no_payments] => 1 [total_payment_amount] => 450 [year] => 2016 [month] => 1) [1] => stdClass Object ([no_payments] => 0 [total_payment_amount] => 0 [year] => 2016 [month] => 2) [2] => stdClass Object ([no_payments] => 0 [total_payment_amount] => 0 [year] => 2016 [month] => 3)) 

回答

0

您可以手动添加它们:

$months = array(); 
$query = $this->db->get('tbl_payments')->result(); 

foreach($query as $q) 
{ 
    $months[] = $q->month; 
} 

for($i = 1; $i <= 12; $i++) 
{ 
    if(!in_array($i, $months)) 
    { 
     $new_data = new stdClass(); 
     $new_data->no_payments = 0; 
     $new_data->total_payment_amount = 0; 
     $new_data->year = 2016; 
     $new_data->month = $i; 
     $query[] = $new_data; 
    } 
} 

这就是假设你只需要本年度的填充月份。如果您查询其他年份,您可以将其添加到逻辑并将其包含在另一个循环中。