叶子最近在做图表的时候遇到一个问题。挣扎了很久。。。最后的最后才破案。。。
下面直接上代码:

后端代码:


//>计算起止时间相差月份
$month = $this->count_month($start_time,$end_time);
$pay_date = [];
for($i=0;$i<$month;){
     $pay_date[] = (string)date('Y-m',strtotime('+'.$i.' month',strtotime($start_time)));
     $i++;
}
//>结尾月份固定为$end_time
$pay_date[] = (string)date('Y-m',strtotime($end_time));

这样返回到前端后格式如下:

这样看来。后端返回数据就正常了。我们来看前端。。。下面第一个版本:


<canvas id="linePay" style="width:200px;height:50px;"></canvas>


这样运行下来。chartjs直接把labels里的年-月当成了减法运算。。。导致了:

接下来一番折腾。是第二版本:


<canvas id="linePay" style="width:200px;height:50px;"></canvas>


以为强制string后可以达到效果。。。结果真的是然并卵。。。最后的最后。。。才突然想起是不是混编不识别这个东西。。。所以有了第三个版本:


<canvas id="linePay" style="width:200px;height:50px;"></canvas>


运行后:

至此排除问题→_→

真真是轮引号的重要性。。。