一尘不染

在PHP中对数组进行分组

algorithm

我有200个项目的阵列。我想输出数组,但将项目与一个公共值组合在一起。与SQL的GROUP BY方法类似。这应该相对容易做到,但我还需要对组项目进行计数。

有人有这样做的有效方法吗?这将在每次页面加载时发生,因此我需要它快速且可扩展。

我是否可以将结果转储到Lucene或sqlite之类的文件中,然后在每次页面加载时对该文档运行查询?

任何想法将不胜感激。


阅读 354

收藏
2020-07-28

共1个答案

一尘不染

只需遍历数组并为组使用另一个数组即可。它应该足够快,并且可能比使用sqlite或类似工具时所涉及的开销更快。

$groups = array();
foreach ($data as $item) {
    $key = $item['key_to_group'];
    if (!isset($groups[$key])) {
        $groups[$key] = array(
            'items' => array($item),
            'count' => 1,
        );
    } else {
        $groups[$key]['items'][] = $item;
        $groups[$key]['count'] += 1;
    }
}
2020-07-28