首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >根据用户和创建时间对php数组项进行分组

根据用户和创建时间对php数组项进行分组
EN

Stack Overflow用户
提问于 2010-05-15 08:29:39
回答 1查看 382关注 0票数 0

这是一个显示用户上传照片的对象数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Array
(
    [12] => stdClass Object
        (
            [type] => photo
            [created] => 2010-05-14 23:36:41
            [user] => stdClass Object
                (
                    [id] => 760
                    [username] => mrsmith
                )

            [photo] => stdClass Object
                (
                    [id] => 4181
                )

        )

    [44] => stdClass Object
        (
            [type] => photo
            [created] => 2010-05-14 23:37:15
            [user] => stdClass Object
                (
                    [id] => 760
                    [username] => mrsmith
                )

            [photo] => stdClass Object
                (
                    [id] => 4180
                )

        )
)

然而,没有显示:

  • 史密斯先生上传了一张照片
  • 史密斯先生上传了一张照片

我想展示:

  • 史密斯先生上传了两张照片

通过分组相似的项目,按用户ID进行分组,并将它们添加到其中,假设彼此相隔15分钟。因此,我想得到这种形状的数组:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
Array
(
    [12] => stdClass Object
        (
            [type] => photo
            [created] => 2010-05-14 23:36:41
            [user] => stdClass Object
                (
                    [id] => 760
                    [username] => mrsmith
                )

            [photos] => Array
                (
                    [0] => stdClass Object
                          (
                           [id] => 4181
                          )

                     [1] => stdClass Object
                          (
                           [id] => 4180
                          )
                )

        )
)

保留组的第一项和它创建的时间,并补充它任何其他可分组的照片,然后取消所有分组的项目(因此,最终数组不再有键44,因为它是与12分组的)。

该数组包含其他操作,而不仅仅是照片,因此原始键为12和44。我只是想不出一种有效的方法。我过去经常使用MySQL和PHP来完成这个任务,但是出于缓存的原因,我尝试使用纯PHP。

谁能说出真知灼见?我考虑过每一项,看看是否可以将其与数组中的前一项进行分组,但前一项可能不一定相关,甚至不一定是一张照片。我的大脑完全冻结了

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2010-05-15 09:53:55

如果按日期排序,则可以执行以下操作:

  • 保持一个数组(让我们称之为$foo),在15分钟的窗口中保存所有的照片。使用数组作为FIFO列表(使用array_shift删除项,使用$foo[] = ...添加项)。
  • 迭代原始数组
    • 检查当前项的日期,并从$foo开头删除日期比当前项少15分钟以上的所有条目。一旦您找到一个项目,对于不到15分钟前发生的事情,您可以停止(这是一个一行循环)。
    • 迭代$foo中的条目
    • 如果找到同一人的照片,那么
      • 更改存储在$foo中的引用,以便添加新数据
      • 从原始数组中删除当前项
      • 脱离内回路

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
- If not  
    - Add a reference to the current item to the end `$foo` with `$foo = &$var`.

然后,可以用重新编制原始数组的索引,以填补空白。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/2840860

复制
相关文章
SPA PP COGI中禁用删除按钮?
本文章仅用于SAP软件的应用、学习沟通,文中所示的截图来源于SAP软件,相应著作权归SAP公司所有。
SPA_小阿龙
2021/02/24
1.7K0
vim中对文本的选择
c. 用上下键选择文本;(v选择多个连续的字符,V选择连续的行,Ctrl+v选择对应的块)
全栈程序员站长
2022/07/12
1.7K0
django admin 列表禁用删除操作,编辑页面禁用删除按钮
class AnchorBindAgentAdmin(admin.ModelAdmin): def get_actions(self, request): # 列表禁用删除操作 if 'delete_selected' in actions: del actions['delete_selected'] return actions def has_delete_permission(self, request, o
卓越笔记
2023/02/18
2.1K0
Android实现EditText文本颜色渐变
刚开始想着先是设置textColor属性就可以了,然后写了个一个带渐变的shap感觉不好使,于是乎就自定义解决,代码如下
程序员飞飞
2020/02/27
3.3K0
Android实现EditText文本颜色渐变
Linux 删除文本中的重复行
这里我做了个简单的测试,当file中的重复行不再一起的时候,uniq将服务删除所有的重复行。经过排序后,所有相同的行都在相邻,因此unqi可以正常删除重复行。
阳光岛主
2019/02/19
8.7K0
EditText把光标放在文本的末尾处
当手动设置EditText的文本时,光标会恢复到最前面,可以再监听中设置光标到末尾处,这样就好了,大家有什么问题可以在下方留言。
程思扬
2022/01/11
5830
Android中EditText
1.android:hint="只能输入指定数字",文本框中显示提示信息 2.android:password="true"该文本框是一个密码框 3.android:phoneNumber="true"该文本框是一个电话框 4.android:digits="abcdefghijk"指输入内容限制为指定内容 5.android:drawableLeft="@drawable/icon"设置文本左边绘制指定图像 6.android:drawablePadding设置文本框内文本与图形间的间距 7.androi
欢醉
2018/01/22
7470
文本分类中的特征选择方法
在文本分类中,特征选择是选择训练集的特定子集的过程并且只在分类算法中使用它们。特征选择过程发生在分类器的训练之前。
数据分析
2018/01/29
1.7K0
文本分类中的特征选择方法
linux中有选择的删除目录中的文件
某些场景下我们需要删除目录下指定类型,后缀的文件。这时候就需要一些小技巧。 首先我们先要了解一下模式匹配。在Linux中,shell模式是由以下特殊字符组成的字符串,称为wildcards或者meta
入门笔记
2022/06/02
3K0
如何禁用或者删除Jenkins项目
禁用Jenkins项目 登录Jenkins系统 找到对应的项目 在右边点击「DISABLE PROJECT」 删除Jenkins 项目 找到对应的项目,直接点击「Delete Project」
叉叉敌
2019/02/20
5.5K0
Edittext In Listview,当listview的item中有edittext时,怎么保存edittext的值?
http://blog.csdn.net/lxk_1993/article/details/50527886
103style
2022/12/19
8630
Edittext In Listview,当listview的item中有edittext时,怎么保存edittext的值?
java的句柄_java获取窗口句柄
Java代码书写过程,文件资源的释放需要特别谨慎的对待.通常文件资源使用后必须close,然后再删除。
全栈程序员站长
2022/11/02
2.4K0
【Oracle笔记】外键的查询、启用禁用、删除
文章目录 一、查询所有表的外键 二、启用/禁用外键约束 三、删除外键 一、查询所有表的外键 select table_name, constraint_name from user_constraints where constraint_type = 'R'; 二、启用/禁用外键约束 alter table FM_CLIENT enable constraint CLIENT_TYPE_2019; //启用 alter table FM_CLIENT disable constraint CLIEN
程序员云帆哥
2022/05/12
1.8K0
python中str.translate的用法,删除文本中的标点符号
table=str.maketrans('','',string.punctuation)
用户7886150
2021/01/14
1.9K0
表单文本框的使用(一) 选择文本
input和textarea都会在value属性保存自己的内容,可设置和读取文本框的值。在textarea中设置value属性无效
赤蓝紫
2023/03/16
1.7K0
表单文本框的使用(一)  选择文本
EditText在RecyclerView中的解决方案
有时候,一个列表中的Item会有EditText的出现,而由于View复用机制,如果不好好处理EditText,将会出现一些问题。之前做项目中也遇到了这个问题,通过摸索以及思考,最终得到了解决方案。
用户1108631
2019/08/14
2.8K0
Android自定义EditText:一款简单实用的智能EditText(一键删除&自定义样式)
具体请看文章:Android自定义View:手把手教你做一款简单实用的SuperEditText(一键删除&自定义样式)
Carson.Ho
2022/03/25
9510
Android自定义EditText:一款简单实用的智能EditText(一键删除&自定义样式)
点击加载更多

相似问题

Python3.9.0 Idle不会打开,我该如何解决这个问题呢?

212

正在尝试创建altcase。Char失效了,我该怎么解决这个问题?

30

XCode不会打开我的任何文件夹...我该如何解决这个问题?

197

fopen未打开文件流...我该如何解决这个问题?

42

我该如何解决这个问题?

218
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文