需求:画图 x轴 坐标轴的数据是一个数组,格式为 yyyy-mm-dd,即2011-3-22形式,但是显示在画面上,看到很多2011-xx-xx,这样的数据,很明显其中年号 数据是多余的,将这个数据 去除,但是又要能够区分不同的年份。
求解:每年的第一次出现时候,显示全部数据,当以后再出现时候,显示mm-dd即可。
又由于针对数组只进行一次循环,故有下解法:
$xScaleArray(
0 => '2009-06',
1 => '2009-07',
2 => '2009-08',
3 => '2009-09',
4 => '2009-10',
5 => '2009-11',
6 => '2009-12',
7 => '2010-01',
8 => '2010-02',
9 => '2010-03',
10 => '2010-04',
11 => '2010-05',
12 => '2010-06',
13 => '2010-07',
14 => '2010-08',
15 => '2010-09',
16 => '2010-10',
17 => '2010-11',
18 => '2010-12',
19 => '2011-01',
20 => '2011-02',
)
$xSize = count($xScaleArray);
$part = (float)768.0/($xSize );//是指图x轴的长度
$intval = 1;
if($xSize > 10){
$intval = (float) ($xSize / 10.00);
}
$mm = 0;
$flag = true;
$year = '2010';//记住年号
for ($m = 0; $m <= $xSize; $m = $m +$intval) {
$yAdd = 0;
$tempValue = $xScaleArray[(int)($m)];
$arr_1 = split('-',$tempValue);
if($flag){
$flag = false;
$yAdd = 10;
$year = $arr_1[0];
}else{
if($arr_1[0] != $year){
$year = $arr_1[0];
$yAdd = 10;
}else{
$tempValue = implode(array_slice($arr_1,1),'-');
}
}
这样后,x轴的所有年份 第一次出现时候 是全年的,以后出现就只会取 mm-dd,效果见附件图。