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
Barbara Streisandasal
2024-11-02 19:31:021027semak imbas

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>

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>

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>

Output:

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

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!

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