Maison  >  Article  >  développement back-end  >  PHP implémente le forum de discussion Changyan et le style de publication NetEase

PHP implémente le forum de discussion Changyan et le style de publication NetEase

墨辰丷
墨辰丷original
2018-06-06 14:05:271626parcourir

Cet article présente principalement l'implémentation du forum de messages Changyan et du style de publication NetEase en PHP. Les amis intéressés peuvent s'y référer. J'espère qu'il sera utile à tout le monde.

Style du tableau de messages Chanyan :

Style de publication NetEase :

Principe
Vous devez ajouter deux champs principaux, id et pid, à la table des commentaires. D'autres champs peuvent l'être. ajouté à volonté, comme l'identifiant de l'article, le temps de réponse, le contenu de la réponse, la personne qui répond, etc.
Le pid est l'identifiant du commentaire auquel on a actuellement répondu.
Comme vous pouvez le voir sur l'image ci-dessus, le pid de chaque calque est l'identifiant du commentaire sur le calque précédent. Regardez de plus près la mise en page ci-dessus. Est-ce similaire aux tableaux multidimensionnels en PHP ? Si vous y réfléchissez, c'est facile.
Méthode de mise en œuvre1. Réception : C'est relativement simple, c'est p intégré dans p. Ensuite, définissez la bordure et le remplissage de la marge de p

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

2. Dans les coulisses : deux récursions sont utilisées. Premièrement, la récursivité est utilisée pour réorganiser les résultats dans le fichier. Ensuite, après réorganisation, utilisez la récursion pour générer le code frontal ci-dessus La structure et le contenu de la table de commentaires sont les suivants

Alors lisez directement ce tableau Tous les commentaires dans . Vous pouvez obtenir le tableau suivant

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 
  ) 
 
)

Ensuite, nous devons réorganiser ce tableau dans le formulaire de forum ci-dessus
où $array est le tableau lu ci-dessus. Tout d'abord, retirez le pid, qui est vide. par défaut. , puis récursivement, après avoir retiré le tableau

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; 
}

dont le pid est l'identifiant du commentaire actuel et l'avoir réorganisé, vous pouvez obtenir le tableau suivant. Vous pouvez voir que le style de ce tableau est. très similaire au style de commentaire frontal

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 
    ( 
    ) 
 
  ) 
 
)

Après avoir obtenu le tableau ci-dessus, utilisez la récursivité pour le sortir

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>"; 
 
 } 
 
}

Ensuite, vous pouvez voir le

principe Voilà, il suffit de réorganiser le tableau puis de parcourir la sortie.

Résumé : Ce qui précède représente l'intégralité du contenu de cet article, j'espère qu'il sera utile à l'étude de chacun.

Recommandations associées :

Le rôle des fonctions anonymes et des fermetures PHP

Méthode PHP de tri des tableaux bidimensionnels

Comment définir les informations d'en-tête en PHP

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn