有乙個講座表(speech)、講座分類表(theme_type)、教工表(teacher)、學院表(college)
需要計算出講座表中 某個學院、所有分類、某年、所有月份的講座數量。
public function detail($pk)
$coll_info = $this->where(array($this->getpk()=>$pk))->field('in_charge_id')->find(['hy'=>true]);
$associate = array(
'teacher|in_charge_id|user_id|department_id',
'college|teacher.department_id|id|id as coll_id,name as college_name',
'theme_type|theme_id|id|theme_name'
);$theme_sum = m('theme_type')->where(array('status'=>array('lt',9)))->count();
$th = m('theme_type')->where(array('status'=>array('lt',9)))->select();
$theme = ;
foreach($th as $v)
$sum = ;
// 看這裡
for($c = 1; $c <= $theme_sum; $c++)else }}
// 這裡為止
$y >= date('y',time) ? $next = false : $next = true;
return array(
'str' => array('year'=>$y,'pk'=>$pk,'nonext'=>$next),
'json' => json_encode(array('theme'=>$theme,'sum'=>$sum),json_unescaped_unicode));}
想要這樣的結果:
問題:1、這樣效率太低了!資料量一大就die掉了!資料操作不要寫在迴圈裡!
2、if else也好寒磣!可以用三元運算子嘛!高階點可以用sprintf('%2d',$m)
3、分類的id:$c怎麼從1開始?如果資料庫中某乙個分類刪除了咋辦!
public function detail($pk)
$coll_info = $this->where(array($this->getpk()=>$pk))->field('in_charge_id')->find(['hy'=>true]);
// 改進-自己寫sql
$result = $this->query("select substring(speech.speech_time, 6, 2) as `speech_month`,speech_time, speech.theme_id, theme.theme_name,count(speech.id) as `speech_count` from `zsjy_speech` as `speech` inner join `zsjy_teacher` as `teacher` on speech.in_charge_id = teacher.user_id inner join `zsjy_theme_type` as `theme` on speech.theme_id = theme.id inner join `zsjy_college` as `college` on teacher.department_id = college.id where college.id = ". $coll_info['department_id'] ." and speech.speech_time like '". $y ."%' group by speech_month, theme.id");
// 至此 整理出所需資料
$th = m('theme_type')->where(array('status'=>array('lt',9)))->select();
$theme = array();
$sum = array();
foreach($th as $v)}}
}$y >= date('y',time) ? $next = false : $next = true;
return array(
'str' => array('year'=>$y,'pk'=>$pk,'nonext'=>$next),
'json' => json_encode(array('theme'=>$theme,'sum'=>$sum)));}
當sql比較複雜的時候就直接用 model->query(sql)效率更高點!**也少點,取出來再在外面整理成想要的格式! 霍夫曼編碼的改進
首先說一說經典霍夫曼編碼。把符號按照出現概率排序,合併概率最小的兩項,為新的節點。然後重複排序 合併的步驟,直到只剩下乙個節點。最後,從根節點開始,向葉節點進行編碼。改進後的霍夫曼編碼,不再是二進位制的。它可以是多進製,例如26進製。操作方法 把符號按出現概率排序,合併概率最小的26項,為新的節點。...
k means演算法及改進
k means是最常用的聚類演算法 k means演算法流程 1 選擇k個類為初始中心 2 在第i次迭代中,對任意樣本,計算其到各中心的距離,將樣本歸到距離最短的中心所在的類 3 利用均值等方法更新類的中心值 4 對於聚類中心,經過2 3 迭代後,值保持不變,迭代結束,否則繼續迭代。k means偽...
Linux的編碼及編碼轉換
如果你需要在linux中操作windows下的檔案,那麼你可能會經常遇到檔案編碼轉換的問題。windows中預設的檔案格式是gbk gb2312 而linux一般都是utf 8。下面介紹一下,在linux中如何檢視檔案的編碼及如何進行對檔案進行編碼轉換。檢視檔案編碼 在linux中檢視檔案編碼可以通...