Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengisih cap masa dalam tatasusunan, mengekalkan nama kunci, menggunakan PHP?

Bagaimana untuk mengisih cap masa dalam tatasusunan, mengekalkan nama kunci, menggunakan PHP?

WBOY
WBOYasal
2024-05-03 22:36:01711semak imbas

Tatasusunan boleh diisih melalui fungsi uasort(), mengekalkan nama utamanya. Untuk mengisih berdasarkan cap masa, anda boleh menggunakan fungsi perbandingan tersuai compare_timestamps, yang membandingkan medan cap masa dalam elemen. Dalam kes sebenar, fungsi perbandingan ini digunakan untuk mengisih cap masa dalam tatasusunan, mengekalkan nama kunci dan mengeluarkan tatasusunan yang diisih daripada kecil ke besar.

如何使用 PHP 对数组中的时间戳进行排序,保留键名?

Isih tatasusunan mengikut cap masa dalam PHP sambil mengekalkan nama kunci

Dalam PHP, kita boleh menggunakan fungsi uasort() untuk mengisih tatasusunan sambil mengekalkan nama kuncinya. Ini ialah sintaks untuk mengisih tatasusunan: 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);

di mana $array ialah tatasusunan yang hendak diisih dan $sort_function ialah fungsi perbandingan yang ditentukan pengguna.

Fungsi perbandingan isih

Fungsi perbandingan isihan mesti mengikut format tertentu:

Array
(
    [item3] => Array
        (
            [timestamp] => 1584230400
        )

    [item1] => Array
        (
            [timestamp] => 1593475200
        )

    [item2] => Array
        (
            [timestamp] => 1601260800
        )
)

Ia perlu menerima dua parameter, $a dan $b ini parameter Mewakili elemen tatasusunan untuk dibandingkan. Fungsi harus mengembalikan nilai berikut:

  • -1: jika $a harus didahulukan sebelum $b.
  • 0: Jika $a dan $b adalah sama.
  • 1: Jika $a sepatutnya datang selepas $b.
🎜Isih berdasarkan cap masa🎜🎜🎜Untuk mengisih tatasusunan berdasarkan cap masa, kita boleh menggunakan fungsi perbandingan isihan berikut: 🎜rrreee🎜Fungsi ini membandingkan cap masa dalam tatasusunan kod elemen> medan dan mengembalikan nilai yang sesuai untuk meletakkan elemen dalam susunan. 🎜🎜🎜 Contoh Praktikal 🎜🎜🎜 Berikut ialah contoh praktikal mengisih cap waktu dalam tatasusunan menggunakan fungsi isihan kami: 🎜rrreee🎜Output: 🎜rrreee🎜Seperti yang anda lihat, tatasusunan telah diisih mengikut susunan nama kunci masa sambil mengekalkan nama kunci masa. 🎜

Atas ialah kandungan terperinci Bagaimana untuk mengisih cap masa dalam tatasusunan, mengekalkan nama kunci, menggunakan PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn