php 多条数据 二维数组 字段中有多个时间戳 根据时间戳 按照每天的时间戳数据归类到一个新数组 并计算出当前最早的时间戳和当前最晚的时间戳
时间: 2024-10-30 18:07:03 浏览: 4
在 PHP 中,你可以使用 `array_reduce()` 或者一个循环结构(如 `foreach` 结合 `date` 函数)来对二维数组按照时间戳分类,并找到最早和最晚的时间戳。这里是一个示例步骤:
首先,假设你有一个二维数组 `$data`,其中每个元素包含日期和其他字段,其中有一个时间戳字段(例如 `$timestamps`):
```php
$data = [
['id' => 1, 'name' => 'Item 1', 'timestamps' => [time() - 86400, time()]],
// 更多数据...
];
// Step 1: 将时间戳转换为日期字符串以便排序
foreach ($data as &$row) {
$row['timestamps'] = array_map('date', 'Y-m-d H:i:s', $row['timestamps']);
}
// Step 2: 使用 array_reduce() 按日期归类并保存每一天的数据
$groupedData = array_reduce(array_column($data, 'timestamps'), function (&$result, $timestamp) {
$date = date('Y-m-d', $timestamp);
if (!isset($result[$date])) {
$result[$date] = [];
}
$result[$date][] = current($data); // 取出当天的第一个记录
return $result;
}, []);
// Step 3: 计算最早的和最晚的时间戳
$earliestTimestamp = min(array_column(array_keys($groupedData), strtotime));
$latestTimestamp = max(array_column(array_values($groupedData), array_column, 1, strtotime));
```
在这个例子中,`array_column()` 和 `strtotime()` 分别用于提取时间和将字符串时间戳转换为整数时间戳。
阅读全文