2017-08-29 59 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 –