繁体   English   中英

计算具有特定数组值的行数

[英]Count number of rows with specific value of array

所以我有一个数组,它有1000行,一列包含用户的年龄,我试图确定如何计算<17,17-25,26-40等人的行数。

我知道这可以用for循环:

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

但是有内置函数可以做到这一点,而不需要做一个for循环来计算所有的值? 一旦计数达到数百万,这对服务器来说不会变得非常沉重吗?

编辑/我应该使用5种不同的SQL选择吗? 只是使用计数(*)? 会更有效率吗?

您可以使用array_filter() ,然后使用count()返回值。

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

注意除非你已经将“birthdate”定义为常量,否则你应该引用它,以便它被视为一个字符串

你可以在获取数据时使用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具有所需组的数组,并进一步操作该组。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

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