可以透過 uasort() 函數對陣列進行排序,保留其鍵名。若要基於時間戳排序,可以使用自訂比較函數 compare_timestamps,該函數比較元素中的 timestamp 欄位。在實戰案例中,使用此比較函數對陣列中的時間戳進行排序,保留了鍵名,並按下從小到大輸出排序後的陣列。
在PHP 中按時間戳記對陣列進行排序,保留鍵名
在PHP 中,我們可以使用uasort()
函數對陣列進行排序,同時保留其鍵名。這是排序數組的語法:
uasort($array, $sort_function);
其中,$array
是要排序的數組,$sort_function
是使用者定義的比較函數。
排序比較函數
排序比較函數必須遵循特定的格式:
function sort_function(mixed $a, mixed $b): int
它需要接受兩個參數,$a
和$b
,這些參數代表要比較的陣列元素。函數應該會傳回以下值:
-1
:如果 $a 應該排在 $b 之前。 0
:如果 $a 和 $b 相等。 1
:如果 $a 應該排在 $b 之後。 基於時間戳排序
要基於時間戳對數組進行排序,我們可以使用以下排序比較函數:
function compare_timestamps(mixed $a, mixed $b): int { return $a['timestamp'] - $b['timestamp']; }
此函數比較數組元素中的timestamp
字段,並傳回適當的值以將元素按順序放置。
實戰案例
以下是使用我們的排序函數對陣列中的時間戳進行排序的實戰案例:
$array = [ 'item1' => ['timestamp' => 1593475200], 'item2' => ['timestamp' => 1601260800], 'item3' => ['timestamp' => 1584230400], ]; uasort($array, 'compare_timestamps'); print_r($array);
輸出:
Array ( [item3] => Array ( [timestamp] => 1584230400 ) [item1] => Array ( [timestamp] => 1593475200 ) [item2] => Array ( [timestamp] => 1601260800 ) )
如你所見,數組已按時間戳順序排序,同時保留了鍵名。
以上是如何使用 PHP 對陣列中的時間戳進行排序,保留鍵名?的詳細內容。更多資訊請關注PHP中文網其他相關文章!