Counting Values in Multidimensional Array

自闭症网瘾萝莉.ら 提交于 2019-11-27 15:11:40

This can be done with a simple iteration:

$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;
}

Update for PHP 5.5

In PHP 5.5, which has added the array_column() function to aggregate an inner key from a 2D array, this can be simplified to:

$counts = array_count_values(array_flip(array_column($array, 'group')));
Vijaysinh Parmar

This can be done with a simple array_map function

$array = array_map(function($element){
    return $element['group'];
}, $array1);

$array2 = (array_count_values($array));

print_r($array2);

Your initial attempt was close. You were simply using the wrong key inside the loop:

$newArr = array();
foreach ($details['user_groups'] as $key => $value) {
        // What you were using:
        // $newArr[$value['user_groups']]++;

        // What you should be using:
        $newArr[$value['group']]++;
}
nimtek123

Try this simple but effective way

$count = call_user_func_array('array_merge_recursive', $Array);
echo count($count['user']).'<br>';
echo count($count['group']).'<br>';
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!