Maison >développement back-end >tutoriel php >Explication détaillée de la fonction de mise en œuvre du forum de discussion du site Web en PHP
Cet article présente principalement comment implémenter la fonction de forum de discussion du site Web en PHP. Il est principalement calqué sur le forum de discussion de Changyan et les amis intéressés peuvent s'y référer. J'espère que cela aide tout le monde.
Ce que je souhaite obtenir, c'est le style indiqué ci-dessous. Vous pouvez vous référer aux forums de discussion des deux sites Web ci-dessous. Leurs principes de mise en œuvre sont les mêmes
Changer le message. style de tableau :
Style de publication NetEase :
Principe
Vous devez ajouter deux champs principaux id et pid dans la table des commentaires. D'autres champs peuvent être ajoutés à volonté, comme l'identifiant de l'article, la réponse. heure, contenu de la réponse, répondeurs, 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 œuvre
1 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
Lisez ensuite directement tous les commentaires de ce tableau. 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['pid'] == $pid) { $v[$child] = self::tree($array,$child,$v['id']); $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 avant
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='comment' style='width: 100%;margin: 10px;background: #EDEFF0;padding: 20px 10px;border: 1px solid #777;'>"; echo $v['content']; if ($v['child']) { self::traverseArray($v['child']); } echo "</p>"; } }
Ensuite, vous pouvez voir
Le principe est le suivant, il suffit de réorganiser le tableau puis de parcourir la sortie.
Recommandations associées :
Explication détaillée de la façon dont PHP affiche les données d'image hexadécimales sur la page Web
Explication détaillée des extensions et plug-ins comportementaux de ThinkPHP
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!