Rumah  >  Artikel  >  pembangunan bahagian belakang  >  Bagaimana untuk mengisih kunci tatasusunan mengikut panjangnya dalam PHP dan menyimpan kuncinya?

Bagaimana untuk mengisih kunci tatasusunan mengikut panjangnya dalam PHP dan menyimpan kuncinya?

王林
王林asal
2024-05-02 13:03:021010semak imbas

Menggunakan fungsi uksort() dan fungsi perbandingan tersuai compareKeyLengths, tatasusunan PHP boleh diisih mengikut panjang nama kunci tatasusunan sambil mengekalkan nama kunci. Fungsi perbandingan mengira perbezaan dalam panjang kunci dan mengembalikan integer mengikut mana uksort() mengisih tatasusunan. Di samping itu, kes praktikal menunjukkan cara mengisih rekod daripada pangkalan data mengikut panjang nama medan.

PHP 中如何根据数组键名长度进行排序,保留键名?

Cara mengisih tatasusunan PHP berdasarkan panjang nama kunci tatasusunan (memelihara nama kunci)

Dalam PHP, anda boleh menggunakan fungsi uksort() untuk mengisih tatasusunan berdasarkan panjang nama kunci tatasusunan Sort. Fungsi ini menerima fungsi panggil balik sebagai parameter, yang membandingkan dua nama kunci dan mengembalikan integer yang mewakili perbezaan panjang kunci. uksort() 函数根据数组键名的长度对数组进行排序。该函数接受一个回调函数作为参数,该函数比较两个键名并返回一个整数,表示键名长度的差值。

排序代码:

<?php
function compareKeyLengths(string $key1, string $key2): int
{
    return strlen($key1) - strlen($key2);
}

$array = ['key1' => 'value1', 'key2' => 'value2', 'key3' => 'value3'];

uksort($array, 'compareKeyLengths');

print_r($array);

输出:

Array
(
    [key1] => value1
    [key2] => value2
    [key3] => value3
)

如您所见,数组已根据键名长度进行排序,同时保留了键名。

实战案例:

这是一个将来自数据库的记录按字段名称长度排序的示例。

<?php
$records = [
    ['firstName' => 'John', 'lastName' => 'Doe'],
    ['firstName' => 'Jane', 'lastName' => 'Smith'],
    ['firstName' => 'Bob', 'lastName' => 'Johnson'],
];

uksort($records, 'compareKeyLengths');

foreach ($records as $record) {
    echo 'Name: ' . $record['firstName'] . ' ' . $record['lastName'] . PHP_EOL;
}

输出:

Name: Bob Johnson
Name: Jane Smith
Name: John Doe

注意:

  • 如果键名长度相等,uksort() 函数将保持原始顺序。
  • 如果需要降序排序,可以在比较函数中交换减法运算符(-+
  • Kod Isih:
rrreee🎜Output:🎜rrreee🎜Seperti yang anda lihat, tatasusunan telah diisih berdasarkan panjang kunci sambil mengekalkan nama kunci. 🎜🎜Kes Praktikal:🎜🎜Ini ialah contoh pengisihan rekod daripada pangkalan data mengikut panjang nama medan. 🎜rrreee🎜Output: 🎜rrreee🎜Nota: 🎜
  • Jika panjang kunci adalah sama, fungsi uksort() akan menyimpan pesanan asal. 🎜
  • Jika anda perlu mengisih dalam tertib menurun, anda boleh menukar operator tolak (- dan +) dalam fungsi perbandingan. 🎜🎜

Atas ialah kandungan terperinci Bagaimana untuk mengisih kunci tatasusunan mengikut panjangnya dalam PHP dan menyimpan kuncinya?. 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