【发布时间】:2019-08-24 16:53:16
【问题描述】:
我有一个带有索引作为时间戳的数组。
我尝试array_slice 获取时间范围内的所有值,但它似乎不起作用。
$data = array_slice(["1549440811" => 1, "1549448226" => 2, "1551108588" => 3 ], 0, 1549460338);
我应该将$data 设为["1549440811" => 1, "1549448226" => 2],但那样不行。
为了获得正确的数据,我必须使用
$data = array_slice(["1549440811" => 1, "1549448226" => 2, "1551108588" => 3 ], 0, 2);
但问题是记录可以有随机时间戳而没有。的记录。所以在这种情况下我无法计算出偏移量为 2。
我知道下面的代码有一些更改可能适用于小范围,但不适用于我的时间戳,因为$myrange 会有很多数据。
$myrange = range(0,1549460338);
$output = array_intersect(["1549440811" => 1, "1549448226" => 2, "1551108588" => 3 ] , $myrange );
我避免循环遍历数组,因为数组有很多数据。我还有很多时间戳要检查。此代码是更大代码的简化逻辑,其中数据库中的记录使用时间戳进行索引。
还有其他方法可以获得所需的数据吗?
【问题讨论】:
-
为什么要过滤数组,为什么不过滤 mysql 查询或任何使用数据库的东西??
-
@nageennayak 我对从数据库获取的数据有一个循环,时间戳 1549460338 是循环中的一条记录,我避免在循环中查询数据库以获取其他数据。我在一个由时间戳索引的查询中获得了其他数据
-
@nageennayak 我正在获取的其他数据也被循环中的其他记录重用
-
数组是否已经按时间戳排序?
-
@acd 是排序
标签: php arrays slice associative-array