[英]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.