ホームページ >バックエンド開発 >PHPチュートリアル >PHP で連想配列をソートするときにキーの順序を維持するにはどうすればよいですか?
PHP の連想配列はキーと値のペアを保存します。 PHP の組み込みソート関数を使用してこのような配列をソートする場合、元のキーの順序を保持するかどうかを考慮することが重要です。この記事では、PHP でのソートの現在の動作を調査し、キーの順序を保持するためのカスタム ソリューションを提供します。
4.1.0 より前の PHP バージョンでは、 asort() や uasort() などのソート関数は、安定したソートを提供します。これは、複数のキーが同じ値を持つ場合、それらのキーの順序がソート結果に保持されることを意味します。ただし、PHP 4.1.0 以降、安定性は保証されなくなりました。
PHP の組み込みソート関数は安定ソートをサポートしていないため、独自のソート関数を実装する必要があります。 。 O(n*log(n)) の時間計算量が保証されているため、この目的にはマージ ソート アルゴリズムがよく使用されます。
<code class="php">function mergesort(&$array, $cmp_function = 'strcmp') { ... // Logic for splitting, merging, and sorting the array ... }</code>
このカスタム関数は、uasort() とともに使用して連想配列を並べ替えることができます。元のキーの順序を保持しながら:
<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>
出力:
Array ( [key-1] => 10 [key-3] => 10 [key-2] => 20 [key-4] => 30 )
カスタム安定ソートを使用する関数を使用すると、元の配列のキーの順序が並べ替えられた出力に保持されます。
以上がPHP で連想配列をソートするときにキーの順序を維持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。