我有這樣輸入:自定義比較功能,以穩定的排序在PHP
array
0 =>
array
'task_uid' => '10214'
'createdate' => '2012-04-18 09:47:40'
'task_id' => '92966'
1 =>
array
'task_uid' => '10214'
'createdate' => '2012-04-18 09:47:40'
'task_id' => '92967'
我必須以穩定的方式進行排序它通過CREATEDATE。 我創建這個函數:
function compareTime($a, $b) {
$a_timestamp = strtotime($a["createdate"]);
$b_timestamp = strtotime($b["createdate"]);
if ($a_timestamp > $b_timestamp)
return -1;
else if ($a_timestamp < $b_timestamp)
return 1;
else
return 0;
//return strcmp($a["createdate"], $b["createdate"]);
}
和
usort($input, array($this, "compareTime"));
應該從最早到最新的,但這種混合的數據進行排序。同樣,如果datacreate是相同的,那麼不會改變位置。 但如果我在compareTime使用:
return strcmp($a["createdate"], $b["createdate"]);
然後,它改變來自例如元素(這是錯誤的對我來說)。你能給我答案我應該如何分類輸入?
是從DB查詢生成的輸入數組?如果是這種情況,你可以使用'ORDER BY' – Naryl
以正常方式在查詢中對它們進行排序。但是由於開發者的錯誤,我們混合了數據。正常的方式 - task_id應該沿着createdata增加。因爲錯誤,我們可以找到具有後期數據但早期task_id的元素。我們使用early_task_id來顯示歷史記錄(例如)。這是修理它的原因,並寫下這個方法 –