![]() |
1
1
用相似的值对项目进行分组很难称为算法。它更多的是一种编码模式,如果还有其他的话。 编码的一个好方法是将机制与意图分离。在这种情况下,机制是如何跟踪键值以查找分组边界,其目的是为每个顺序组输出HTML。 例如,python有一个名为groupby的库函数来实现这一点。所以在python中,代码看起来是这样的(忽略了这样一个事实,即您将为此使用模板库):
据我所知,PHP没有类似的内置功能,但简单的实现非常容易:
这将是您所包含的典型库代码。然后处理输出的代码变得相当简单。与分组方式完全隔离。例如,您可以更改array_groupby以返回实现迭代器接口的对象,并且只从输入iterable中延迟获取。
本例使用的是php 5.3闭包功能。在较旧的版本中,指定提取分组键的函数会稍显丑陋,可能需要面向对象的方法。 |
![]() |
2
1
你应该打印结束语
此外,在循环之后(同样,如果最后一个ID不为空,这意味着根本没有组),您需要关闭最后一个组。 |
![]() |
3
0
我已经有一段时间没做过任何PHP了,但我会尝试这样的方法…
可能需要改进以确保最后不打印额外的DIV。 |