let*_*ngo 9 php arrays foreach counting
我目前有以下数组:
Array(
[0] => Array
(
[user] => Name 1
[group] => 1
)
[1] => Array
(
[user] => Name 2
[group] => 1
)
[2] => Array
(
[user] => Name 3
[group] => 2
)
[3] => Array
(
[user] => Name 4
[group] => 2
)
[4] => Array
(
[user] => Name 5
[group] => 3
)
)
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用各种group
值作为键创建一个新数组,然后计算每组中有多少以提供以下内容:
Array
(
[1] => 2
[2] => 2
[3] => 1
)
Run Code Online (Sandbox Code Playgroud)
我试图使用以下内容,但是我收到了未定义的索引警告:
$newArr = array();
foreach ($details['user_groups'] as $key => $value) {
$newArr[$value['user_groups']]++;
}
Run Code Online (Sandbox Code Playgroud)
(我确实检查了SO的其他答案,但找不到试图做同样的事情)
Mic*_*ski 13
这可以通过简单的迭代完成:
$counts = array();
foreach ($array as $key=>$subarr) {
// Add to the current group count if it exists
if (isset($counts[$subarr['group']]) {
$counts[$subarr['group']]++;
}
// or initialize to 1 if it doesn't exist
else $counts[$subarr['group']] = 1;
// Or the ternary one-liner version
// instead of the preceding if/else block
$counts[$subarr['group']] = isset($counts[$subarr['group']]) ? $counts[$subarr['group']]++ : 1;
}
Run Code Online (Sandbox Code Playgroud)
在PHP 5.5中,它添加了array_column()
从2D数组聚合内部键的功能,这可以简化为:
$counts = array_count_values(array_flip(array_column($array, 'group')));
Run Code Online (Sandbox Code Playgroud)
这可以通过一个简单的array_map
功能来完成
$array = array_map(function($element){
return $element['group'];
}, $array1);
$array2 = (array_count_values($array));
print_r($array2);
Run Code Online (Sandbox Code Playgroud)