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['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 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='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 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!