【发布时间】:2018-09-05 09:41:28
【问题描述】:
在我的网络应用程序中,我有一些数组,它返回的数组与此输出类似:
[
0=>
pk = "ID"
username = "PAGE"
full_name = "PAGE"
is_private = false
reel_auto_archive = "on"
latest_reel_media = "1536080134"
is_favorite = false
1=>
pk = "ID"
username = "PAGE"
full_name = "PAGE"
is_private = false
reel_auto_archive = "on"
latest_reel_media = "1536050134"
is_favorite = false
]
因为我想使用 array_filter 过滤带有latest_reel_media 的数组,这是时间戳低于例如1535707694
例如:
$mediaTime = 86400 * 3;
$time_limit = strtotime(date("Y-m-d H:i:s")) - $mediaTime;
$followers = array_filter($followers, [new LowerThanFilter($time_limit,'latest_reel_media'), "isLower"]);
LowerThanFilter类:
class LowerThanFilter
{
private $limit;
private $latest_reel_media;
function __construct($limit,$latest_reel_media)
{
$this->limit = $limit;
$this->latest_reel_media=$latest_reel_media;
}
function isLower($i)
{
return $i <= $this->limit;
}
}
在测试超过 100000 条记录的代码后,array_fillter 不起作用并返回所有不正确的 100000 记录
【问题讨论】:
-
您的班级如何比较
latest_reel_media键和$limit属性? -
@AymDev 是的,你是对的,我该如何添加它来比较?
-
array_filter将 elements 传递给过滤函数。在您的情况下,这意味着您的过滤功能在$i参数中获取 whole 记录。所以你需要这样的东西:return $i['latest_reel_media'] <= $this->limit;
标签: php