蛋疼男折腾PHP数组

昨天真的很蛋疼,偶不懂PHP,但是因为某些需求,找了个php的绘图框架pChart

我需要自动生成本周和上周数据对比的柱状图,看了文档和demo,简单搞定了

但是这个框架貌似不能在X轴同时显示两个值,我想显示上周时间和本周时间,例如“2.26/3.5”

可这框架不支持,因为都是用数组来输出数据的,所以想到把两个时间合到一起放到一个新数组中作为字符串输出

之前的两个时间数组内的值为

1
2
$x_data = = array(2.26,2.27,2.28,3.1,3.2,3.3,3.4);
$x_data2 = = array(2.19,2.20,2.21,2.22,2.23,2.24,2.25);

然后我写了一个循环把两个数组合到一起

1
2
3
4
5
6
7
for ($b=0;$b< =6;$b++)
{
$date = array();
$date[$b] = strval($x_data2[$b])."/".strval($x_data[$b]);
echo $date[$b]."
";

}

echo数组,打出来的值也是对的,例如2.19/2.26

生出图的一段代码为,下面是原始的demo

1
2
3
4
5
6
7
$MyData = new pData();   
$MyData->addPoints(array(150,220,300,-250,-420,-200,300,200,100),"Server A");
$myData->setSerieDescription("Server A","This Week");
$MyData->addPoints(array(140,0,340,-300,-320,-300,200,100,50),"Server B");
$myData->setSerieDescription("Server B","This Week");
$MyData->addPoints(array("January","February","March","April","May","Juin","July","August","September"),"Months");
$MyData->setAbscissa("Months");

我把数据部分替换就好

1
2
3
4
5
6
7
$myData = new pData();
$myData->addPoints($y_data2,"Serie1"); //$y_data2 是上周的数据
$myData->setSerieDescription("Serie1","Last Week");
$myData->addPoints($y_data,"Serie2"); //$y_data 是本周的数据
$myData->setSerieDescription("Serie2","This Week");
$myData->addPoints($date,"Date"); //$date就是X轴,上面循环得到的新时间
$myData->setAbscissa("Date");

如果我注释了最上面那个合并时间的代码,时间轴只有$x_data一周的时间表示,图可以正常显示
pChart

但是如果我使用了上面的合并时间的循环,图片就把所有柱都打到了一个位置,重叠了
pChart2

真不知道PHP的数组有什么特别的,试了各种可能,都搞不定

唉,不懂PHP真痛苦,有无高手指点下

后来用print_r($date)打印出来看看结果,发现每次只有一个值 Array ( [6] => 34/34 )

发现我把数组定义写在循环内了。。。。看来常年不写程序,这种白痴错误都是正常的,还折腾了那么久

之前因为把echo $date[$b]写在循环内,所以每次都能打出对应的值。。。。囧了,我只能说自己好2.。。。。

声明: 除非注明,小峰网络遨游记文章均为原创,转载请以链接形式标明本文地址

本博客原创文字只代表本人某一时间内的观点或结论,与本人所在公司没有任何关系。

本作品采用知识共享署名-非商业性使用 4.0 国际许可协议进行许可。

第三方若用于商业用途的转载,须取得本人授权。

本文作者:

本文地址:http://xfeng.me/eggache-torment-php-array/

你可能还对下面文章感兴趣: