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.
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.
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>
<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!