900字范文,内容丰富有趣,生活中的好帮手!
900字范文 > 一个算法问题 求大神指点思路

一个算法问题 求大神指点思路

时间:2023-08-29 13:06:08

相关推荐

一个算法问题 求大神指点思路

后端开发|php教程

php,数组

后端开发-php教程

e模块 源码,vscode配置代理下载插件,ubuntu 源码下载,tomcat弱口令扫描,.sqlite加密,网页设计学生作业,帝国模板哪里存放数据库,云服务器 好处,pdf 文档插件,netiler前端框架,宝塔爬虫,php获取根目录,哈尔滨seo排名,springboot热词,dedecms tags标签,毕业设计代做网站代码,简易手机网页制作,通告文字上下滚动效果移动端模板,网站后台管理系统密码,h5页面加载特效,xgcms内容管理系统,易语言程序克隆lzw

光头强源码,vscode插件下载包,ubuntu 后台,tomcat 帮助文档,sqlite互斥,制作手机购物网页设计,mvc 操作数据库,100m云服务器租用,彩票报号插件,互联网大厂前端框架开发,爬虫标识,群晖 php,温州seo服务,springboot演练项目,织梦 友情链接标签,asp网站扫描,手机浏览器禁止网页源代码,phpcms门户模板,牛商的网站后台,js 导航切换页面,高校科研管理系统下载,p2p网站程序lzw

如上图,有一个房间,进入房间时间是一条记录,出去时间是一条记录,每个用户的记录都是不同的,怎么把用户在房间时间段的弄成下面这种数组形式,数据库存储的记录是这样的

[‘id’=>1,’uid’=>22,’stauts’=>’离开’,’time’=>1415947332]

[‘id’=>2,’uid’=>22,’stauts’=>’进入’,’time’=>1415947333]

[‘id’=>3,’uid’=>22,’stauts’=>’离开’,’time’=>1415997332]

[‘id’=>4,’uid’=>22,’stauts’=>’进入’,’time’=>1416947333]

[‘id’=>6,’uid’=>23,’stauts’=>’离开’,’time’=>1415947332]

[‘id’=>7,’uid’=>23,’stauts’=>’进入’,’time’=>1415947333]

[‘id’=>8,’uid’=>23,’stauts’=>’离开’,’time’=>1415997332]

[‘id’=>9,’uid’=>23,’stauts’=>’进入’,’time’=>1416947333]

开奖源码接口,jdk安装在ubuntu,tomcat配置多数据源,nodejs监控爬虫,php入门教程活动外包,丽江seo效果lzw

$data=[ [0]=>[ egin_time=>第一个进入时间, end_time=>第一个出去时间, ], [1]=>[ egin_time=>第二个进入时间, end_time=>第二个出去时间, ], [2]=>[ egin_time=>第三个进入时间, end_time=>第三个进出去时间, ], [3]=>[ egin_time=>第四个进入时间, end_time=>第四个进出去时间, ].....

]

回复内容:

如上图,有一个房间,进入房间时间是一条记录,出去时间是一条记录,每个用户的记录都是不同的,怎么把用户在房间时间段的弄成下面这种数组形式,数据库存储的记录是这样的

[‘id’=>1,’uid’=>22,’stauts’=>’离开’,’time’=>1415947332]

[‘id’=>2,’uid’=>22,’stauts’=>’进入’,’time’=>1415947333]

[‘id’=>3,’uid’=>22,’stauts’=>’离开’,’time’=>1415997332]

[‘id’=>4,’uid’=>22,’stauts’=>’进入’,’time’=>1416947333]

[‘id’=>6,’uid’=>23,’stauts’=>’离开’,’time’=>1415947332]

[‘id’=>7,’uid’=>23,’stauts’=>’进入’,’time’=>1415947333]

[‘id’=>8,’uid’=>23,’stauts’=>’离开’,’time’=>1415997332]

[‘id’=>9,’uid’=>23,’stauts’=>’进入’,’time’=>1416947333]

$data=[ [0]=>[ egin_time=>第一个进入时间, end_time=>第一个出去时间, ], [1]=>[ egin_time=>第二个进入时间, end_time=>第二个出去时间, ], [2]=>[ egin_time=>第三个进入时间, end_time=>第三个进出去时间, ], [3]=>[ egin_time=>第四个进入时间, end_time=>第四个进出去时间, ].....

]

end_time,进入=>egin_time];$results = [[id=>1,uid=>22,status=>离开, ime=>1415947332],[id=>2,uid=>22,status=>进入, ime=>1415947333],[id=>3,uid=>22,status=>离开, ime=>1415997332],[id=>4,uid=>22,status=>进入, ime=>1416947333],[id=>6,uid=>23,status=>离开, ime=>1415947332],[id=>7,uid=>23,status=>进入, ime=>1415947333],[id=>8,uid=>23,status=>离开, ime=>1415997332],[id=>9,uid=>23,status=>进入, ime=>1416947333],];foreach($results as $result){ if(!isset($data[$result[uid]])){ $data[$result[uid]]=[]; } $data[$result[uid]] += [$status[$result[status]]=>$result[ ime]];}print_r($data);$data = array_values($data);print_r($data);

可以循环数组,新数组以id为key保存离开和进入时间,最后再把新数组去掉key就可以得到你要的格式了。 但这样需要查询出来所有的数据

1,stauts=>离开, ime=>1415947332],[id=>1,stauts=>进入, ime=>1415947333]; //源数据$result = array();foreach($data as $tmp){ isset($result[$tmp[id]]) or $result[$tmp[id]] = array(); switch($tmp[status]){ case 进入 : $result[$tmp[id]][egin_time] = $tmp[ ime]; break; case 离开 : $result[$tmp[id]][end_time] = $tmp[ ime]; break; }}print_r($result);

1,uid=>22,status=>离开, ime=>1415947332],[id=>2,uid=>22,status=>进入, ime=>1415947333],[id=>3,uid=>22,status=>离开, ime=>1415997332],[id=>4,uid=>22,status=>进入, ime=>1416947333],[id=>6,uid=>23,status=>离开, ime=>1415947332],[id=>7,uid=>23,status=>进入, ime=>1415947333],[id=>8,uid=>23,status=>离开, ime=>1415997332],[id=>9,uid=>23,status=>进入, ime=>1416947333],];$data=array();array_sort($results, ime,asc);foreach($results as $res){ if($res[status]==进入){ foreach($results as $res1){ if($res1[status]==离开 && $res[ ime]$res[ ime], end_time=>$res1[ ime],); break; } } }}var_dump($data);

大体思路应该是这样,这个多次循环比较耗时,数据多的时候会很慢,有更优化的方法,例如第二层循环的进入先删掉,和某列匹配掉后,unset掉,当然,这要建立在第二层循环的数组和第一层的数组分离开

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。