Re: [請益] 運算陣列太大,會跑不太出來嗎?

看板PHP作者 (低溫烘焙)時間15年前 (2010/04/21 02:32), 編輯推噓0(002)
留言2則, 1人參與, 最新討論串4/5 (看更多)
事實上,我不知道我有沒有會錯意原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
XD,改1500000好像會爆掉
04/21 02:34, 1F

04/21 04:33, , 2F
Allowed memory size of 134217728 bytes exhausted
04/21 04:33, 2F
文章代碼(AID): #1BpVD9LD (PHP)
文章代碼(AID): #1BpVD9LD (PHP)