这是一个显示用户上传照片的对象数组:
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分钟。因此,我想得到这种形状的数组:
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。
谁能说出真知灼见?我考虑过每一项,看看是否可以将其与数组中的前一项进行分组,但前一项可能不一定相关,甚至不一定是一张照片。我的大脑完全冻结了
发布于 2010-05-15 09:53:55
如果按日期排序,则可以执行以下操作:
$foo
),在15分钟的窗口中保存所有的照片。使用数组作为FIFO列表(使用array_shift
删除项,使用$foo[] = ...
添加项)。$foo
开头删除日期比当前项少15分钟以上的所有条目。一旦您找到一个项目,对于不到15分钟前发生的事情,您可以停止(这是一个一行循环)。$foo
中的条目$foo
中的引用,以便添加新数据
- If not
- Add a reference to the current item to the end `$foo` with `$foo = &$var`.
然后,可以用值重新编制原始数组的索引,以填补空白。
https://stackoverflow.com/questions/2840860
复制