首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >聊天列表提取逻辑

聊天列表提取逻辑
EN

Stack Overflow用户
提问于 2022-06-13 07:46:31
回答 1查看 27关注 0票数 0

有一个网站。我将用户的聊天存储为每个聊天的单个json文件。因此,当用户请求聊天列表时,php脚本读取存储聊天的目录,并返回聊天数组。数组按最后消息日期排序。

显然,我不需要撤回聊天,但每页:前10个聊天,然后接下来10个聊天。但是每次聊天都会被分类,这让我很困惑。

我如何使每页取回其他更简单的清单:

还有一个产品目录(它是一家商店)。

考虑一个包含“id”字段的json对象数组。在前端用户请求第一页中,服务器返回数组的前10个元素。前端存储最后一个元素的id。

然后,当需要加载第二个页面时,前端调用相同的请求,但现在也传递最后一个元素id。现在,服务器将不会从0返回元素到10,而是从id->index +1返回id->index + 11。

如何使用聊天数组来实现这一点,在这种情况下顺序总是在变化?

代码语言:javascript
复制
 // example of catalog items withdraw

 $a = json_decode(‘[{“id”:1640}, {“id”:5292},{“id”:3720}]’, true); // order is constant
 $last = ‘’;
 $ok = true;

 if(isset($_GET[“last”]))
 {
     $last = $_GET[“last”];
     $ok = false;
 }

 $ret = [];

 for($i = 0; $i < count($a) && count($ret) < 10; $i++)
    if(!$ok && $a[$i][“i”] == $last)
       $ok = true;
    else
       $ret[count($ret)] = $a[$i];

 echo json_encode($ret);
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-07-03 10:29:39

我目前所设想的唯一解决方案是下一个:

与我的问题中的情况不同,服务器返回的元素范围从指定的参数元素到接下来的10个元素,即(指定的,specified+10),如果是聊天,则需要始终从第一个返回到指定的页面,而不是元素。

默认情况下,方法返回元素[0,10)。在前端用户滚动聊天列表中,客户端将发出相同的请求,但传递page=2作为参数,服务器将返回元素[0,20]等等。

所以,是的,如果到了30页,可能会有麻烦,但是,一开始就解决了超载的问题,因为只有前10,然后前20等元素会被传递和渲染。

代码语言:javascript
复制
if(isset($_GET["chats"]) && isset($_GET["page"]))
{
// Initialize, get user data, get array of chats
$a = json_decode(‘[{}, {}, {}]’, true); // An array of already sorted by last message date chats

$result = [];
$page = intval($_GET[“page”]);
if(!$page)
  $page = 1;

$max = 10;

for($i = 0; $i < count($a) && $i < $page * $max; $i++)
  $result[$i] = $a[$i];

echo json_encode($result, JSON_UNESCAPED_UNICODE);
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72599320

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档