Maison > développement back-end > tutoriel php > 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

墨辰丷
Libérer: 2023-03-30 07:08:01
original
1707 Les gens l'ont consulté

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>
Copier après la connexion

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 
  ) 
 
)
Copier après la connexion

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; 
}
Copier après la connexion

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 
    ( 
    ) 
 
  ) 
 
)
Copier après la connexion

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>"; 
 
 } 
 
}
Copier après la connexion

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal