ホームページ >バックエンド開発 >PHPチュートリアル >PHP で多次元連想配列を特定のキーでソートするにはどうすればよいですか?
PHP で連想配列をキーで並べ替える方法 [重複]
配列の並べ替えは、特に次の場合にプログラミングで一般的なタスクになることがあります。 PHP の連想配列のようなデータ構造を扱います。これらの配列は通常の配列に似ていますが、数値インデックスの代わりにキーによって要素にアクセスできます。
問題:
のような要素を含む連想配列があります。以下に示すもの:
Array ( [0] => Array ( [text] => tests [language] => [advertiserCompetitionScale] => 5 [avgSearchVolume] => 7480000 [lastMonthSearchVolume] => 9140000 ) [1] => Array ( [text] => personality tests [language] => [advertiserCompetitionScale] => 5 [avgSearchVolume] => 165000 [lastMonthSearchVolume] => 201000 ) [2] => Array ( [text] => online tests [language] => [advertiserCompetitionScale] => 5 [avgSearchVolume] => 246000 [lastMonthSearchVolume] => 301000 ) )
この配列を「avgSearchVolume」に基づいて降順に並べ替えたいとします。 field.
解決策:
PHP には、この目的に使用できる usort という組み込み関数が用意されています。 usort は、ソートする配列と比較関数の 2 つの引数を取ります。比較関数は 2 つの配列要素を引数として受け取り、負の整数、ゼロ、または正の整数を返します。
配列を並べ替えるには、次のような比較関数を定義できます。
function cmp($a, $b) { return $b['avgSearchVolume'] - $a['avgSearchVolume']; }
この関数は、最初の要素の "avgSearchVolume" フィールドを "avgSearchVolume" から減算します。 2 番目の要素の " フィールド。結果が負の場合は、2 番目の要素が最初の要素の前に来る必要があることを意味します。ゼロの場合、要素は等しいとみなされます。正の場合、最初の要素が 2 番目の要素より前に来る必要があります。
最後に、usort を呼び出して、比較関数を 2 番目の引数として渡すことができます。
usort($array, "cmp");
usort を呼び出した後、配列「avgSearchVolume」フィールドによって降順に並べ替えられます。
以上がPHP で多次元連想配列を特定のキーでソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。