uksort() 関数とカスタム比較関数 CompareKeyLengths を使用すると、キー名を保持したまま、配列キー名の長さに応じて PHP 配列を並べ替えることができます。比較関数はキーの長さの違いを計算し、uksort() が配列をソートする基準に従って整数を返します。さらに、実際のケースでは、フィールド名の長さによってデータベースのレコードを並べ替える方法を示します。
PHP では、uksort を使用できます。 ()
この関数は、配列のキー名の長さに応じて配列を並べ替えます。この関数は、2 つのキー名を比較し、キーの長さの違いを表す整数を返すコールバック関数をパラメーターとして受け取ります。
ソートコード:
<?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 )
ご覧のとおり、配列はキーに基づいてソートされています。 length 、キー名は保持します。
実践的なケース:
これは、フィールド名の長さによってデータベースのレコードを並べ替える例です。
<?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 ( )
関数は元の順序を維持します。 -
と
) を交換できます。 以上がPHPで配列キーを長さに応じてソートし、キーを保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。