寒磣的編碼及改進

2022-05-06 13:00:17 字數 2529 閱讀 7009

有乙個講座表(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中檢視檔案編碼可以通...