ホームページ  >  記事  >  バックエンド開発  >  連想配列を数値とキーでそれぞれ降順と昇順に並べ替えるにはどうすればよいですか?

連想配列を数値とキーでそれぞれ降順と昇順に並べ替えるにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-11 10:01:03272ブラウズ

How to Sort an Associative Array by Numeric Value and Key in Descending and Ascending Order Respectively?

数値とキーによる連想配列の並べ替え

このプログラミングの難問には、数値を含む連想配列が含まれており、特にリストの作成を対象としています。ここで、タグは最初に出現回数の降順で並べ替えられ、次にアルファベットの昇順で並べ替えられます。

問題の定義

配列の例を考えてみましょう:

$arrTags = [
    'mango' => 2, 
    'orange' => 4, 
    'apple' => 2,
    'banana' => 3
];

この配列に必要な出力はソートされたリストです。

orange (4)  
banana (3) 
apple (2) 
mango (2)

ネイティブ PHP 関数 arsort() は、アルファベット順の優先順位により apple より mango を優先するため、不十分です。

解決策

array_keys() 関数と array_values() 関数を使用すると、この問題にさらに効率的に取り組むことができます。次のコードは、解決策の例です。

array_multisort(array_values($arrTags), SORT_DESC, array_keys($arrTags), SORT_ASC, $arrTags);

この 1 行により、ループの必要性がなくなり、最初に array_values() を使用して配列から値を抽出して並べ替え可能な配列にすることによって、必要な並べ替えが完了します。その後、SORT_DESC を使用して値が降順に並べ替えられます。同時に、対応するキーが array_keys() を使用して抽出され、SORT_ASC を使用して昇順に並べ替えられます。次に、提供された $arrTags パラメーターを利用して、結果が元の配列に再結合されます。

以上が連想配列を数値とキーでそれぞれ降順と昇順に並べ替えるにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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