シナリオ
アップロード、コメント、いいね、ユーザーのフォローなどの基本的な機能を備えた画像 Web サイト。
これは、基本的に、アップロードなどのイベントが発生したときにnotifications
テーブルに挿入されread
、ユーザーがそれを見たかどうかを判断する列があります。
現在の出力例は次のようになります。
John Doe liked Picture of my cat.
Sarah Doe liked Picture of my cat.
Adam Doe liked Picture of my cat.
Sarah Doe liked Picture of my cat.
Henry Doe is now following you.
これは基本的に入力時間順に並べられています。
今私が達成したいのは、次のようなものです。
4 users liked Picture of my cat.
Henry Doe is now following you.
私は平均的な PHP の知識をこれに取り込もうと懸命に努力していますが、考えられる最善の方法は、このようなことをすることです。
$query = mysql_query("SELECT * FROM `notifications` WHERE `read` = '0' LIMIT 20");
$likes = array();
$following = array();
while($row = mysql_fetch_array($query)){
if($row['type'] == "like"){
array_push($likes,$row['id']);
} elseif($row['type'] == "following"){
array_push($following,$row['id']);
}
}
そして、どういうわけかそれらを正しく表示するように並べ替えます。しかし、それでも非常に複雑なようです。
また、誰かが提案を思いついた場合に考えるべきもう1つのことは、たとえば、5分離れていても通知が異なるなど、直接ではなくてもグループ化するアルゴリズムを用意することをお勧めします。その間に、例えば
John Doe liked Picture of my cat.
John Doe is now following you.
Sarah Doe liked Picture of my cat.
Sarah is now following you.
の中へ
2 People liked Picture of my cat.
2 New Users are now following you.