Подсчитать количество строк с определенным значением массива - PullRequest
3 голосов
/ 02 марта 2012

Итак, у меня есть массив, в нем 1000 строк, а в столбце указан возраст пользователя, я пытаюсь определить, как подсчитать количество строк для людей <17, 17-25, 26-40 и т. Д.. </p>

Я знаю, что это возможно с помощью цикла for:

for($i=0,$i<$totalrows,$i++)
    $birthdate=$array[$i][birthdate];
    if($birthdate>1995)
    {
        $seventeen=$seventeen+1;
    }
    elseif
    {
        etc...

, но есть ли встроенная функция, которая может сделать это вместо необходимости выполнять цикл for для вычисления всех значений?Как только счет достигнет миллионов, разве это не обременительно для сервера?

edit / я должен делать это примерно с 5 различными SQL-выборками?просто используя счет (*)?это будет более эффективным?

Ответы [ 2 ]

1 голос
/ 02 марта 2012

вы могли бы сделать подсчет с помощью sql при получении данных. Что касается производительности обработки, все зависит от запросов.

Что касается PHP, то вы можете создать многомерный массив.

$arr = array(
    '0-16' => array(

    ),
    '17-25' => array(

    ),
    '26-40' => array(

    )
);

и когда вы выбираете группу, добавьте их в группу

while ($query as $result) {
    if ($result['age'] < 17) {
        $arr['0-16']['age'] = $result['age'];
        $arr['0-16']['name'] = $result['name'];
    }
}

затем подсчитайте

echo count($arr['0-16'])

таким образом, вы всегда можете print_r массив, в котором находится нужная вам группа, и далее управлять этой группой.

1 голос
/ 02 марта 2012

Вы можете использовать array_filter () , а затем count () возвращаемые значения из этого.

$seventeen = count(array_filter($array,
                                function ($entry) { 
                                    return ($entry['birthdate'] > 1995); 
                                }
                               )
                  )

NB Если вы не определили «дату рождения» какконстанта, вы должны заключить ее в кавычки, чтобы она воспринималась как строка

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...