ホームページ >バックエンド開発 >PHPチュートリアル >PHP のカスタム比較関数を使用して配列をソートし、キー名を保持するにはどうすればよいですか?

PHP のカスタム比較関数を使用して配列をソートし、キー名を保持するにはどうすればよいですか?

WBOY
WBOYオリジナル
2024-05-04 11:51:01558ブラウズ

PHP でカスタム比較関数を使用すると、配列を並べ替えてキー名を保持できます。これを行うには、配列とコールバック関数をパラメータとして受け取る usort() 関数を使用できます。コールバック関数は 2 つの配列要素を受け取り、並べ替え順序を示す整数 (-1、0、または 1) を返します。

PHP 中如何使用自定义比较函数对数组进行排序,并保留键名?

カスタム比較関数を使用して PHP で配列を並べ替え、キー名を保持する

カスタム比較関数を使用して配列を並べ替えるのは、配列演算の一般的な演算。 PHP では、usort() 関数を使用してこれを簡単に実現できます。

構文

usort(array, callable)
  • array: ソートする配列。
  • callable: 配列要素の比較に使用されるコールバック関数。 2 つの引数 (2 つの配列要素) を受け入れ、整数 (-1、0、または 1) を返す必要があります。

実践的なケース

次の例は、カスタム比較関数を使用して、キー名を保持しながら配列内のキー名を並べ替える方法を示しています。この例では、

compare

関数は 2 つのキー名 ($a['key']$b['key']) をパラメータとして受け取ります。 strcmp()関数を使用してそれらを比較します。 strcmp() この関数は -1、0、または 1 を返し、最初の文字列が 2 番目の文字列より小さいか、等しいか、大きいかを示します。

usort()

関数が呼び出されると、指定された比較関数が $arr 配列内の各要素に適用されます。 compare 関数が -1 を返す場合、最初の要素は 2 番目の要素の前に並べ替えられます。1 を返す場合はその逆で、0 を返す場合は要素の順序は変更されません。 最終出力は次のとおりです:

<?php

// 待排序的数组
$arr = [
    'a' => 10,
    'c' => 5,
    'b' => 20,
];

// 自定义比较函数
$compare = function ($a, $b) {
    return strcmp($a['key'], $b['key']);
};

usort($arr, $compare);

// 输出排序后的数组
print_r($arr);

配列は、キー名を保持したまま、キー名に従って小さいものから大きいものへと並べ替えられます。

以上がPHP のカスタム比較関数を使用して配列をソートし、キー名を保持するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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