中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用php怎么編寫一個文章評論系統

發布時間:2021-02-15 17:03:26 來源:億速云 閱讀:183 作者:Leah 欄目:開發技術

這篇文章將為大家詳細講解有關使用php怎么編寫一個文章評論系統,文章內容質量較高,因此小編分享給大家做個參考,希望大家閱讀完這篇文章后對相關知識有一定的了解。

首先設計數據庫如下:

create table `comments`(
 `id` bigint unsigned not null AUTO_INCREMENT,
 `arc_id` bigint unsigned not null COMMENT '文章id',
 `user_id` bigint unsigned not null COMMENT '用戶id',
 `comment_id` bigint unsigned not null DEFAULT '0' COMMENT '回復某個評論的id',
 `content` varchar(255) not null DEFAULT '' COMMENT '評論或回復的內容',
 `add_time` timestamp not null DEFAULT CURRENT_TIMESTAMP COMMENT '添加時間',
 PRIMARY KEY (`id`),
 KEY `arc_id` (`arc_id`)
)ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT '文章評論表';

創建測試數據如下:

使用php怎么編寫一個文章評論系統

具體實現方案如下(在ThinkPHP框架上實現):

1、遞歸方式

優點:實現代碼簡單,而且如果評論的層級固定在5個層次一下的話,建議使用該種方法,這樣前端通過這種數據結果實現簡單。

缺點:如果評論的層級沒有固定的話,前端將無法展示評論信息了,而且如果層級太多的話,將會極大的消耗內存,更要命的是每次遞歸都得查詢數據庫,性能將大大的降低。

/**
 * @param $arc_id  文章id
 * @param int $comm_id  評論id
 * @param array $result
 * @return array
 */
function getCommlist($arc_id, $comm_id = 0, &$result = array()){  //獲取評論列表
 if(empty($arc_id)){
 return array();
 }
 $_where = "arc_id = {$arc_id} AND comment_id = {$comm_id}";
 $res = M('comments')->where($_where)->order('add_time DESC')->select();
 if(empty($res)){
 return array();
 }
 foreach ($res as $cm) {
 $thisArr = &$result[];
 $cm["_child"] = getCommlist($arc_id,$cm['id'],$thisArr);
 $thisArr = $cm;
 }
 
 return $result;
}

部分數據展示如下:

使用php怎么編寫一個文章評論系統

2、非遞歸方式(堆棧方式實現)

優點:只查詢一次數據庫,性能較好。可以實現n層級的評論,前端也能很好的展示

缺點:代碼稍微復雜,對于固定的層級評論,前端展示評論較為復雜。

/**
 * @param $arc_id 文章id
 * @return array
 */
public function getCommlist($arc_id){
 if(empty($arc_id)){
 return array();
 }
 $res = M('comments')->where(array('arc_id'=>$arc_id))->order('add_time ASC')->select();
 $dataList = $stack = array();
 if($res){
 foreach($res AS $k=>$v){  //先將評論的數據進行入庫(即comment_id=0)
  if($v['comment_id'] == 0){
  $v['_level'] = 0;  //設置層級數
  $v['_root'] = $v['id'];  //標識評論id
  array_push($stack,$v);  //入棧
  unset($res[$k]);
  }
 }
 
 while(!empty($stack)){
  $node = array_pop($stack);  //出棧
  $dataList[] = $node;
  foreach($res as $_k=>$_v){
  if($_v['comment_id'] == $node['id']){
   $_v['_level'] = $node['_level']+1;  //設置層級數
   $_v['_root'] = $node['_root'];  //標識評論id
   array_push($stack,$_v);  //入棧
   unset($res[$_k]);
  }
  }
 }
 }
 
 return $dataList;
}

數據展示效果如下:

使用php怎么編寫一個文章評論系統

關于使用php怎么編寫一個文章評論系統就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

php
AI

武陟县| 旺苍县| 鄢陵县| 兴宁市| 汉源县| 应城市| 黔东| 城口县| 巴彦县| 东乡族自治县| 扬中市| 宽城| 贵溪市| 兴安盟| 册亨县| 滦平县| 崇仁县| 新兴县| 深水埗区| 浦城县| 苍溪县| 若羌县| 武安市| 尚志市| 新巴尔虎左旗| 江口县| 钟祥市| 咸宁市| 宁津县| 辽宁省| 江川县| 宜昌市| 无锡市| 延边| 仙居县| 凉城县| 金昌市| 曲松县| 长汀县| 长顺县| 呼伦贝尔市|