2017-08-29 6 views
-1

LastUseキーが見つからないオブジェクトを下部に移動するには、ここでusort関数を操作するにはどうすればよいですか?欠損値を持つ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

はこのようなものになるはずです。彼らは自分の位置を変更するために、第2に、最初の行からトップの移動マイナス記号までswimpので、もし

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); 
    }); 

はそれをテストしていません。

+1

また、 '$ a'と' $ b'の両方が* empty * 'LastUse'(→' return 0')の場合も考慮する必要があります。 – deceze

+0

コールバック比較関数によって返される負の値( '-1'、f.e.)は、' $ a'はソートされたリストの '$ b'の前にとどまるべきです。最初の 'if'は' return +1; 'を返し、2番目の' 'は-1を返します。 – axiac

+0

これはそれでした。ご協力いただきありがとうございます! https://pastebin.com/ymuQ57Qu –

関連する問題