Rumah > pembangunan bahagian belakang > tutorial php > Bagaimana untuk Mengekalkan Susunan Utama Apabila Mengisih Tatasusunan Bersekutu dalam PHP?

Bagaimana untuk Mengekalkan Susunan Utama Apabila Mengisih Tatasusunan Bersekutu dalam PHP?

Barbara Streisand
Lepaskan: 2024-11-02 19:31:02
asal
998 orang telah melayarinya

How to Preserve Key Order When Sorting Associative Arrays in PHP?

Kekalkan Susunan Kunci Semasa Mengisih Tatasusunan Bersekutu dalam PHP

Tatasusunan Bersekutu dalam PHP menyimpan pasangan nilai kunci. Apabila mengisih tatasusunan sedemikian menggunakan fungsi pengisihan terbina dalam PHP, adalah penting untuk mempertimbangkan sama ada untuk mengekalkan susunan kunci asal atau tidak. Dalam artikel ini, kami akan meneroka gelagat semasa pengisihan dalam PHP dan menyediakan penyelesaian tersuai untuk mengekalkan susunan kunci.

Fungsi Isih dan Kestabilan PHP

Dalam versi PHP sebelum 4.1.0, fungsi pengisihan, seperti asort() dan uasort(), menyediakan jenis yang stabil. Ini bermakna apabila berbilang kunci mempunyai nilai yang sama, susunan kunci tersebut akan dikekalkan dalam hasil yang diisih. Walau bagaimanapun, bermula dengan PHP 4.1.0, kestabilan tidak lagi terjamin.

Fungsi Isih Stabil Tersuai

Memandangkan fungsi pengisihan terbina dalam PHP tidak menyokong pengisihan yang stabil, kita perlu melaksanakan fungsi kita sendiri . Algoritma isihan gabungan biasanya digunakan untuk tujuan ini kerana kerumitan masa O(n*log(n)) yang dijamin:

<code class="php">function mergesort(&$array, $cmp_function = 'strcmp') {
    ...
    // Logic for splitting, merging, and sorting the array
    ...
}</code>
Salin selepas log masuk

Fungsi tersuai ini boleh digunakan dengan uasort() untuk mengisih tatasusunan bersekutu sambil mengekalkan susunan kunci asal:

<code class="php">uasort($arr, function($a, $b) {
    return mergesort([$a, $b]);
});</code>
Salin selepas log masuk

Contoh Penggunaan

<code class="php">$arr = [
    'key-1' => 10,
    'key-2' => 20,
    'key-3' => 10,
    'key-4' => 30,
];

uasort($arr, function($a, $b) {
    return mergesort([$a, $b]);
});

print_r($arr);</code>
Salin selepas log masuk

Output:

Array
(
    [key-1] => 10
    [key-3] => 10
    [key-2] => 20
    [key-4] => 30
)
Salin selepas log masuk

Dengan menggunakan isihan stabil tersuai fungsi, susunan kunci tatasusunan asal dikekalkan dalam output yang diisih.

Atas ialah kandungan terperinci Bagaimana untuk Mengekalkan Susunan Utama Apabila Mengisih Tatasusunan Bersekutu dalam PHP?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan