Php 获取数组中高于给定值的值的数目
所以我有一个数组,其中包含一个ID作为键,创建时间作为值, 例如,我的数组如下所示Php 获取数组中高于给定值的值的数目,php,arrays,count,Php,Arrays,Count,所以我有一个数组,其中包含一个ID作为键,创建时间作为值, 例如,我的数组如下所示 $id_time_array = [ [21]=> 1540494319 [939]=> 1540494328 [2205]=> 1540494331 ]; 我想得到在过去3个小时内创建的ID的数量,PHP中是否有用于此的函数,或者最简单的方法是什么 一旦建立了截止时间戳 $cutoff = strtotime('3 hours ago'); 您可以将数组筛选为大于截止值的项,并计算其结果
$id_time_array = [
[21]=> 1540494319
[939]=> 1540494328
[2205]=> 1540494331 ];
我想得到在过去3个小时内创建的ID的数量,PHP中是否有用于此的函数,或者最简单的方法是什么 一旦建立了截止时间戳
$cutoff = strtotime('3 hours ago');
您可以将数组筛选为大于截止值的项,并计算其结果
$result = count(array_filter($array, function($timestamp) use ($cutoff) {
return $timestamp > $cutoff;
}));
如果您只需要计数,则不需要对ID执行任何操作
array\u filter
的第二个参数是一个
use
语句将$cutoff
变量引入匿名函数的。否则,函数将无法访问该变量。您可以在我链接的PHP文档中详细了解它
一旦建立了截止时间戳
$cutoff = strtotime('3 hours ago');
您可以将数组筛选为大于截止值的项,并计算其结果
$result = count(array_filter($array, function($timestamp) use ($cutoff) {
return $timestamp > $cutoff;
}));
如果您只需要计数,则不需要对ID执行任何操作
array\u filter
的第二个参数是一个
use
语句将$cutoff
变量引入匿名函数的。否则,函数将无法访问该变量。您可以在我链接的PHP文档中详细了解它
@DontPanic所说的是正确的。但是,我不得不问,这些值是否来自数据库?如果是这样的话,使用查询引擎进行此筛选会快得多。@colefner我同意,它也可以更快地进行计数。@colefner一个序列化数组来自DBWell,在这种情况下,数据库可能不会有多大帮助。哦,哦,是的,那么你必须在应用层处理计数/筛选。有很多方法可以使用mysql搜索序列化数据,但它可能不会比使用PHP更有效。@DontPanic所说的是正确的。但是,我不得不问,这些值是否来自数据库?如果是这样的话,使用查询引擎进行此筛选会快得多。@colefner我同意,它也可以更快地进行计数。@colefner一个序列化数组来自DBWell,在这种情况下,数据库可能不会有多大帮助。哦,哦,是的,那么你必须在应用层处理计数/筛选。有很多方法可以使用mysql搜索序列化数据,但它可能不会比使用PHP更有效@DontPanic你能解释一下“函数($timestamp)使用($cutoff)”做什么吗?@DaBeginer我在答案中添加了一些解释。@DontPanic你能解释一下“函数($timestamp)使用($cutoff)”做什么吗?@DaBeginer我在答案中添加了一些解释。