我找到了这个thread,其中数组中的对象按其属性名称“排序”。我希望以某种日期格式做同样的事情。即。
Array
(
[0] => stdClass Object
(
[ID] => 1
[date] => '6/7/10'
)
[1] => stdClass Object
(
[ID] => 2
[date] => '3/10/15'
)
[2] => stdClass Object
(
[ID] => 3
[date] => '7/1/11'
)
变为
Array
(
[0] => stdClass Object
(
[ID] => 1
[date] => '6/7/10'
)
[1] => stdClass Object
(
[ID] => 3
[date] => '7/1/11'
)
[2] => stdClass Object
(
[ID] => 2
[date] => '3/10/15'
)
但是,我无法理解其中任何一个答案是否正常工作。
usort($your_data, function($a, $b)
{
// code to
// sort by newest
return $result;
});
是否返回了整个数组?这是增量排序吗?或者我完全误解了OP的问题?
答案 0 :(得分:1)
因为你的$your_data
是通过引用传递的,所以usort实际上对原始数组进行排序,而不是返回它的排序副本。第二个参数中的回调仅用于比较元素。从PHP文档:
如果第一个参数被认为分别小于,等于或大于第二个参数,则比较函数必须返回小于,等于或大于零的整数。
因此,如果您想按日期对对象进行排序,可以使用:
usort($your_data, function($a, $b)
{
$date1 = strtotime($a->date);
$date2 = strtotime($b->date);
if ($date1 < $date2) return -1;
if ($date1 == $date2) return 0;
if ($date1 > $date2) return 1;
});