以下是一个示例代码,演示了如何按最接近日期排序的PHP对象数组:
class MyObject {
public $date;
public function __construct($date) {
$this->date = $date;
}
}
// 创建对象数组
$objects = [
new MyObject(new DateTime('2022-01-01')),
new MyObject(new DateTime('2022-01-05')),
new MyObject(new DateTime('2022-01-03')),
new MyObject(new DateTime('2022-01-02')),
];
// 定义一个自定义排序函数
function sortByClosestDate($a, $b) {
$dateA = $a->date;
$dateB = $b->date;
$diffA = abs(time() - $dateA->getTimestamp());
$diffB = abs(time() - $dateB->getTimestamp());
if ($diffA == $diffB) {
return 0;
}
return ($diffA < $diffB) ? -1 : 1;
}
// 使用自定义排序函数进行排序
usort($objects, 'sortByClosestDate');
// 打印排序后的结果
foreach ($objects as $object) {
echo $object->date->format('Y-m-d') . "\n";
}
上述代码首先定义了一个MyObject
类,该类有一个date
属性,用于存储日期。然后创建了一个对象数组$objects
,包含了四个MyObject
对象,每个对象都有一个不同的日期。
接下来,定义了一个自定义排序函数sortByClosestDate
,该函数比较两个对象的日期,计算出与当前时间的时间差,并返回较小时间差的对象。
最后,使用usort()
函数调用自定义排序函数对对象数组进行排序。排序完成后,使用foreach
循环打印排序后的结果,即按最接近日期排序的对象数组。
上一篇:按最接近日期对对象数组进行排序
下一篇:按最近30天过滤zcard。