PHP中的数组分组
我有一个200项的数组。我想输出数组,但用一个公共值对项目进行分组。类似于SQL的GROUPBY方法。这应该是相对容易做到的,但我还需要一组项目的计数 有没有人有一个有效的方法来做到这一点?这将发生在每个页面加载,所以我需要它是快速和可扩展的 我是否可以预先将结果转储到Lucene或sqlite中,然后在每次加载页面时对该文档运行查询PHP中的数组分组,php,arrays,algorithm,data-structures,grouping,Php,Arrays,Algorithm,Data Structures,Grouping,我有一个200项的数组。我想输出数组,但用一个公共值对项目进行分组。类似于SQL的GROUPBY方法。这应该是相对容易做到的,但我还需要一组项目的计数 有没有人有一个有效的方法来做到这一点?这将发生在每个页面加载,所以我需要它是快速和可扩展的 我是否可以预先将结果转储到Lucene或sqlite中,然后在每次加载页面时对该文档运行查询 如果您有任何想法,我们将不胜感激。只需在数组上迭代,并为组使用另一个数组即可。它应该足够快,并且可能比使用sqlite或类似工具时所涉及的开销要快 $groups
如果您有任何想法,我们将不胜感激。只需在数组上迭代,并为组使用另一个数组即可。它应该足够快,并且可能比使用sqlite或类似工具时所涉及的开销要快
$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";
$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;
}
}
下面是一个简单的例子:
$a = array(1, 2, 3, 1, 2, 3, 3, 2, 3, 2, 3, 4, 4, 1);
$n = array_count_values($a);
arsort($n);
印刷费($n)
排列(
[3] => 5
[2] => 4
[1] => 3
[4] =>2)
结果:
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
带有[3]个元素的“$Switches”数组
0
开关ID 1
名字k�
类型输出
显示按钮
重视
groupname group1
1数组[6]
2阵列[6]
//这将按groupname排序
$result=array();
$target=计数($Switches);
对于($i=0;$iLucene或sqlite很可能比PHP解决方案效率低得多。请看这一个:应该有解决您的问题的方法,只要sql Server在大多数情况下更快就可以了。设置非常重要。这就是我错过的
Array ( [0] => 1 [1] => 2 [2] => 3 [3] => 4 [4] => 5 [5] => 6 )
"$Switches" Array with [3] elements
0
SwitchID 1
name k�
type output
displayAs button
value on
groupname group1
1 Array [6]
2 Array [6]
// this will sort after groupname
$result = array();
$target = count($Switches);
for($i=0;$i<$target;$i++)
{
$groupname = $Switches[$i]["groupname"];
$result[$groupname][] = $Switches[$i];
}
// count amount of groups
$groupCount = count($result);