Re: [請益] 運算陣列太大,會跑不太出來嗎?
事實上,我不知道我有沒有會錯意原PO的問題
但我猜應該是沒有錯XD,另外我把原PO的資料
範圍的最大和最小值獨立為變數,以後比較好
異動。還有因為單純要測試,所以我把原本的
最大值1500000先縮減到1500。
程式碼如下:
/***********************************
* 產生(假)原生資料
***********************************/
$min = 0;//最小值
$max = 1500;//最大值
$set = 50;//產生組數
srand((double)microtime()*1000000);
for($i=0;$i<$set;$i++){
$start = rand($min , $max);
$end = rand($start , $max);
$raw_data[] = array($start,$end);
}
/***********************************
* 計算各「數字」出現次數(累加)
***********************************/
$count = array();
foreach($raw_data as $data){
list($start,$end) = $data;
for($start;$start<=$end;$start++){
$start = (int)$start;
$count[$start] = @$count[$start] + 1;
}
}
/***********************************
* 補填可能為0的「數字」
***********************************/
$range = array_fill ($min ,$max, 0);
foreach($range as $key => $value){
$range[$key] = isset($count[$key])?$count[$key]:0;
}
###############################################
# 接下來是為了要繪出長條圖所寫的程式,可略過
###############################################
/***********************************
* 將資料縮小比例
***********************************/
$size = 50;//將有($max/$size)組
$chart_range = array();
$x = array();//X軸
foreach($range as $key => $value){
$group = ($key / $size);
@$chart_range[$group] += $value;
$x[$group] = @$x[$group-1] + $size;
}
//取得縮小比例最大值
$data_min = min($chart_range);
//取得縮小比例後最小值
$data_max = max($chart_range);
/***********************************
* 組合google chart的參數
***********************************/
$chart_url= 'http://chart.apis.google.com/chart?';
$params = array(
//圖型尺寸
'chs' => '1000x300',
//圖型樣式
'cht' => 'bvg',
//是否顯示X,Y軸(不顯示就拿掉x或y字元)
'chxt' => 'x,y',
//0:X軸字串,1:Y軸字串
'chxl' => '0:'.join('|',$x).'1:|100|200|300|400|500|600|700|800|1000',
//資料
'chd' => 't:'.join(',',$chart_range),
//資料可能的最大最小值
'chds' =>
join(',',array_fill(0,count($chart_range),"{$data_min},{$data_max}"))
);
foreach($params as $name => $value){
$params[$name] = "{$name}={$value}";
}
header("Content-type: image/png");
echo file_get_contents($chart_url.join('&',$params));
如果要看範例,可以直接連結下列網址
http://doublekai.org/demo/bbs.php
--
歡迎來我的網誌看看
@ http://liaosankai.pixnet.net/blog
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 114.26.188.70
→
04/21 02:34, , 1F
04/21 02:34, 1F
→
04/21 04:33, , 2F
04/21 04:33, 2F
討論串 (同標題文章)
完整討論串 (本文為第 4 之 5 篇):
PHP 近期熱門文章
PTT數位生活區 即時熱門文章