2017-08-29 64 views
-1

如何在这里操作usort函数来将缺少LastUse键的对象移动到底部?缺少值的PHP usort

在此之前没有另一个循环将LastUse设置为0值,我不完全确定实现它的最佳方式。

我会查看列表顶部排序的LastUse值,以及那些列表底部没有值的排序值。

usort($trackdata, function ($a, $b) { 
     return strtotime($b->LastUse) - strtotime($a->LastUse); 
    }); 
+2

“忽略”究竟是什么意思,因为你重新排序元素? – zerkms

+0

什么是排序数据? – Script47

+2

根据您是否希望缺失值的元素出现在列表的末尾或开始处,只需在函数中有一个案例在缺失值时返回1或-1。 – iainn

回答

1

应该是这样的:

usort($trackdata, function ($a, $b) { 
     if (empty($a->LastUse) && empty($b->LastUse)) return 0; 
     if (empty($a->LastUse)) return -1; 
     if (empty($b->LastUse)) return 1; 
     return strtotime($b->LastUse) - strtotime($a->LastUse); 
    }); 

没有测试,所以如果他们swimp到顶部移动减号从第一行第二次改变自己的立场。

+1

你还应该考虑'$ a'和'$ b'都有* empty *'LastUse'(→'return 0')的情况。 – deceze

+0

回调比较函数返回的负值('-1',f.e.)表示'$ a'应该保留在排序列表中的$ b前面。第一个'if'应该'返回+1;',第二个应该'返回-1;'。 – axiac

+0

这是做到了。谢谢您的帮助! https://pastebin.com/ymuQ57Qu –