用PHP分组数组

Giv*_*ivP 14 php arrays algorithm grouping data-structures

我有一个200项的数组.我想输出数组,但使用公共值对项目进行分组.类似于SQL的GROUP BY方法.这应该相对容易,但我也需要计算组项目.

有没有人有这样做的有效方法?这将发生在每个页面加载,所以我需要它快速和可扩展.

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

任何想法将不胜感激.

Fer*_*yer 30

只需迭代数组并为组使用另一个数组.它应该足够快,并且可能比使用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;
    }
}
Run Code Online (Sandbox Code Playgroud)


cha*_*aos 14

$groups = array();
foreach($items as $item)
    $groups[$item['value']][] = $item;
foreach($groups as $value => $items)
    echo 'Group ' . $value . ' has ' . count($items) . ' ' . (count($items) == 1 ? 'item' : 'items') . "\n";
Run Code Online (Sandbox Code Playgroud)