按日期对对象数组进行排序
在 PHP 中,我们经常遇到需要按特定属性对对象数组进行排序的情况,例如日期字段。这使我们能够按时间顺序显示或操作数据。
按日期重新排列对象
考虑以下对象数组,其中每个对象代表一条带有日期属性:
<code class="php">$array = [ 495 => (object)['date' => '2009-10-31 18:24:09'], 582 => (object)['date' => '2010-2-11 12:01:42'], ];</code>
要按日期属性升序(最旧的在前)对这些对象进行排序,我们可以使用 strtotime() 函数和 usort() 函数。
自定义比较函数
要使用 usort(),我们需要定义一个自定义比较函数,根据两个对象的日期属性来比较它们。以下代码定义了一个函数,该函数从第二个对象的日期的时间戳中减去第一个对象的日期的时间戳(使用 strtotime() 转换):
<code class="php">function cb($a, $b) { return strtotime($a['date']) - strtotime($b['date']); }</code>
使用 usort() 对数组进行排序
一旦我们有了比较函数,我们就可以在数组上调用 usort(),并将比较函数作为第二个参数传递:
<code class="php">usort($array, 'cb');</code>
示例
使用前面的示例数组,生成的排序数组将是:
<code class="php">[ 495 => (object)['date' => '2009-10-31 18:24:09'], 582 => (object)['date' => '2010-2-11 12:01:42'], ]</code>
PHP 5.3 及以上
对于 PHP 5.3以上,可以使用更简单的匿名函数作为比较函数:
<code class="php">usort($array, function($a, $b) { return strtotime($a['date']) - strtotime($b['date']); });</code>
这种方法实现了与上一种相同的排序结果
以上是如何在 PHP 中按日期对对象数组进行排序?的详细内容。更多信息请关注PHP中文网其他相关文章!