>  기사  >  백엔드 개발  >  PHP는 Changyan 게시판과 NetEase 게시 스타일을 구현합니다.

PHP는 Changyan 게시판과 NetEase 게시 스타일을 구현합니다.

墨辰丷
墨辰丷원래의
2018-06-06 14:05:271682검색

이 글은 주로 Changyan 메시지 게시판과 NetEase 포스트 스타일을 PHP로 구현하는 방법을 소개합니다. 관심 있는 친구들이 참고하면 좋을 것 같습니다.

메시지 보드 스타일 변경:

NetEase 게시물 스타일:

Principle
두 개의 기본 필드를 추가해야 합니다. pid 및 기타 필드 댓글 테이블 기사 ID, 답변 시간, 답변 내용, 답변 사람 등 자유롭게 추가하세요.
PID는 현재 답글이 달린 댓글의 ID입니다.
위 그림에서 볼 수 있듯이 각 레이어의 pid는 이전 레이어의 댓글 ID입니다. 위의 레이아웃을 자세히 살펴보세요. PHP의 다차원 배열과 매우 유사합니까? 생각해보면 쉽습니다.
구현 방법1. 프런트 데스크: p에 p가 포함되어 있어 비교적 간단합니다. 그런 다음 p

<p class="comment"> 
 <p class="comment"> 
  <p class="comment"> 
 
  </p> 
 </p> 
</p> 
 
<p class="comment"> 
 
</p>

의 테두리와 여백 패딩을 설정합니다. Backstage: 먼저 재귀를 사용하여 데이터베이스의 결과를 재구성한 다음 재귀를 사용하여 위의 앞부분을 출력합니다. -end 코드는 댓글 테이블의 구조와 내용은 다음과 같습니다

그리고 이 테이블에 있는 모든 댓글을 직접 읽어보세요. 다음 배열을 얻을 수 있습니다

Array 
( 
 [0] => Array 
  ( 
   [id] => 1 
   [pid] => 
   [content] => 评论1 
  ) 
 
 [1] => Array 
  ( 
   [id] => 2 
   [pid] => 
   [content] => 评论2 
  ) 
 
 [2] => Array 
  ( 
   [id] => 3 
   [pid] => 
   [content] => 评论3 
  ) 
 
 [3] => Array 
  ( 
   [id] => 4 
   [pid] => 1 
   [content] => 评论4回复评论1 
  ) 
 
 [4] => Array 
  ( 
   [id] => 5 
   [pid] => 1 
   [content] => 评论5回复评论1 
  ) 
 
 [5] => Array 
  ( 
   [id] => 6 
   [pid] => 2 
   [content] => 评论6回复评论2 
  ) 
 
 [6] => Array 
  ( 
   [id] => 7 
   [pid] => 4 
   [content] => 评论7回复评论4 
  ) 
 
 [7] => Array 
  ( 
   [id] => 8 
   [pid] => 7 
   [content] => 评论8回复评论7 
  ) 
 
 [8] => Array 
  ( 
   [id] => 9 
   [pid] => 8 
   [content] => 评论9回复评论8 
  ) 
 
 [9] => Array 
  ( 
   [id] => 10 
   [pid] => 8 
   [content] => 评论10回复评论8 
  ) 
 
)

그런 다음 이 배열을 위의 메시지 보드 형식으로 재구성해야 합니다
여기서 $array는 위에서 읽은 배열입니다. 먼저 기본적으로 비어 있는 pid를 꺼낸 다음 반복하여 꺼냅니다. pid 현재 댓글 id

public static function tree($array,$child="child", $pid = null) 
{ 
 $temp = []; 
 foreach ($array as $v) { 
  if ($v[&#39;pid&#39;] == $pid) { 
   $v[$child] = self::tree($array,$child,$v[&#39;id&#39;]); 
   $temp[] = $v; 
  } 
 } 
 return $temp; 
}

의 배열을 재구성하면 아래와 같은 배열을 얻을 수 있습니다. 이 배열의 스타일이 앞 댓글 스타일

Array 
( 
 [0] => Array 
  ( 
   [id] => 1 
   [pid] => 
   [content] => 评论1 
   [child] => Array 
    ( 
     [0] => Array 
      ( 
       [id] => 4 
       [pid] => 1 
       [content] => 评论4回复评论1 
       [child] => Array 
        ( 
         [0] => Array 
          ( 
           [id] => 7 
           [pid] => 4 
           [content] => 评论7回复评论4 
           [child] => Array 
            ( 
             [0] => Array 
              ( 
               [id] => 8 
               [pid] => 7 
               [content] => 评论8回复评论7 
               [child] => Array 
                ( 
                 [0] => Array 
                  ( 
                   [id] => 9 
                   [pid] => 8 
                   [content] => 评论9回复评论8 
                   [child] => Array 
                    ( 
                    ) 
 
                  ) 
 
                 [1] => Array 
                  ( 
                   [id] => 10 
                   [pid] => 8 
                   [content] => 评论10回复评论8 
                   [child] => Array 
                    ( 
                    ) 
 
                  ) 
 
                ) 
 
              ) 
 
            ) 
 
          ) 
 
        ) 
 
      ) 
 
     [1] => Array 
      ( 
       [id] => 5 
       [pid] => 1 
       [content] => 评论5回复评论1 
       [child] => Array 
        ( 
        ) 
 
      ) 
 
    ) 
 
  ) 
 
 [1] => Array 
  ( 
   [id] => 2 
   [pid] => 
   [content] => 评论2 
   [child] => Array 
    ( 
     [0] => Array 
      ( 
       [id] => 6 
       [pid] => 2 
       [content] => 评论6回复评论2 
       [child] => Array 
        ( 
        ) 
 
      ) 
 
    ) 
 
  ) 
 
 [2] => Array 
  ( 
   [id] => 3 
   [pid] => 
   [content] => 评论3 
   [child] => Array 
    ( 
    ) 
 
  ) 
 
)

과 매우 유사하다는 것을 알 수 있습니다. 재귀 출력을 사용하세요

public static function traverseArray($array) 
{ 
 foreach ($array as $v) { 
  echo "<p class=&#39;comment&#39; style=&#39;width: 100%;margin: 10px;background: #EDEFF0;padding: 20px 10px;border: 1px solid #777;&#39;>"; 
  echo $v[&#39;content&#39;]; 
  if ($v[&#39;child&#39;]) { 
   self::traverseArray($v[&#39;child&#39;]); 
  } 
  echo "</p>"; 
 
 } 
 
}

그러면

이렇게 됩니다. 원리는 이렇습니다. 배열을 재구성한 다음 출력을 반복하면 됩니다.

요약: 위 내용이 이 글의 전체 내용입니다. 모든 분들의 공부에 도움이 되었으면 좋겠습니다.

관련 권장 사항:

PHP 익명 함수 및 클로저의 역할

PHP에서 2차원 배열을 정렬하는 방법

PHP에서 헤더 정보를 설정하는 방법

위 내용은 PHP는 Changyan 게시판과 NetEase 게시 스타일을 구현합니다.의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.