简体   繁体   中英

how can i get count of each age group using php

please check this :

Array
(
    [0] => 46-65
    [1] => 7-12|31-45
    [2] => 31-45
    [3] => 31-45
    [4] => 66+
    [5] => 18-30
    [6] => 46-65
    [7] => 13-17|46-65

Here i converted string to array then i got below array :

Array
(
    [0] => Array
        (
            [0] => 46-65
        )

    [1] => Array
        (
            [0] => 7-12
            [1] => 31-45
        )

    [2] => Array
        (
            [0] => 31-45
        )

    [3] => Array
        (
            [0] => 31-45
        )

    [4] => Array
        (
            [0] => 66+
        )

    [5] => Array
        (
            [0] => 18-30
        )

    [6] => Array
        (
            [0] => 46-65
        )

    [7] => Array
        (
            [0] => 13-17
            [1] => 46-65
        )

    [8] => Array
        (
            [0] => 31-45
        )

    [9] => Array
        (
            [0] => 31-45
        )

    [10] => Array
        (
            [0] => 31-45
        )

    [11] => Array
        (
            [0] => 18-30
        )

    [12] => Array
        (
            [0] => 
        )

    [13] => Array
        (
            [0] => 46-65
        )

    [14] => Array
        (
            [0] => 7-12
            [1] => 31-45
        )

    [15] => Array
        (
            [0] => 18-30
        )

    [16] => Array
        (
            [0] => 18-30
            [1] => 31-45
        )

    [17] => Array
        (
            [0] => 18-30
        )

    [18] => Array
        (
            [0] => 31-45
        )

    [19] => Array
        (
            [0] => 18-30
        )

    [20] => Array
        (
            [0] => 13-17
            [1] => 18-30
            [2] => 46-65
        )
}

I stored age group in string format because each row can be have multiple age group. after that i converted into array. How can i get count of each age group like 46-65 is 6 times 18-30 is 8 times. HEre i want count of each age group

This code should work for that:

<?php
$selections = [/** your array here */];
$counted = [];

// Loop full list
foreach($selections as $selection) {

    // Loop age elements in list
    foreach ($selection as $age) {

        // If not already counted initialise age range
        if(!isset($counted[$age])) {
            $counted[$age] = 0;
        }

        // Increment age range
        $counted[$age]++;
    }
}

var_dump($counted);

I'm not sure I fully understood tom problem. Try something like this. This will return you a array with as key the groups and as value the number of times it has been met. I used your second array or you already subdivided into sub array

$groups = [];
foreach($array as $subArray) {
  foreach ($subArray as $group) {
    if (isset($groups[$group])) {
      $groups[$group] += 1;
    } else {
      $groups[$group] = 1;
    }
  }
}

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM