//如果code相同,当存在state=0和state=1同时存在或者state=0时取时间最小的数据,当state=1时取最新的时间数据,得到的数据合并成一个新数组
public function tests(){
$array = [
['code' => 'HA001', 'state' => 0, 'time' => '2023-01-09 12:00:00'],
['code' => 'HA001', 'state' => 0, 'time' => '2023-01-02 12:00:00'],
['code' => 'HA001', 'state' => 1, 'time' => '2023-01-03 12:00:00'],
['code' => 'HA002', 'state' => 1, 'time' => '2023-01-04 12:00:00'],
['code' => 'HA002', 'state' => 1, 'time' => '2023-01-01 10:00:00'],
['code' => 'HA003', 'state' => 1, 'time' => '2023-01-04 12:00:00'],
['code' => 'HA003', 'state' => 1, 'time' => '2023-01-06 12:00:00'],
['code' => 'HA004', 'state' => 0, 'time' => '2023-01-03 10:00:00'],
['code' => 'HA004', 'state' => 1, 'time' => '2023-01-01 10:00:00'],
['code' => 'HA004', 'state' => 0, 'time' => '2023-01-07 10:00:00']
];
$result = [];
foreach ($array as $item) {
$code = $item['code'];
if (!isset($result[$code])) {
$result[$code] = $item;
} else {
// 如果当前code已存在,则根据state和time进行判断
if ($result[$code]['state'] === 0 && $item['state'] === 0) {
// 如果两个都是state=0,取time更小的
if (strtotime($item['time']) < strtotime($result[$code]['time'])) {
$result[$code] = $item;
}
} elseif ($result[$code]['state'] === 1 && $item['state'] === 0) {
// 如果已有的是state=1,当前是state=0,替换为state=0的
$result[$code] = $item;
} elseif ($result[$code]['state'] === 1 && $item['state'] === 1) {
// 如果两个都是state=1,取time更大的
if (strtotime($item['time']) > strtotime($result[$code]['time'])) {
$result[$code] = $item;
}
}
}
}
// 重置键名(如果需要)
$result = array_values($result);
08-03
1332
