ホームページ >バックエンド開発 >PHPチュートリアル >PHPで配列キーを長さに応じてソートし、キーを保持するにはどうすればよいですか?

PHPで配列キーを長さに応じてソートし、キーを保持するにはどうすればよいですか?

王林
王林オリジナル
2024-05-02 13:03:021062ブラウズ

uksort() 関数とカスタム比較関数 CompareKeyLengths を使用すると、キー名を保持したまま、配列キー名の長さに応じて PHP 配列を並べ替えることができます。比較関数はキーの長さの違いを計算し、uksort() が配列をソートする基準に従って整数を返します。さらに、実際のケースでは、フィールド名の長さによってデータベースのレコードを並べ替える方法を示します。

PHP 中如何根据数组键名长度进行排序,保留键名?

配列キーの長さに基づいて PHP 配列を並べ替える方法 (キーを保持する)

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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。