ホームページ > バックエンド開発 > PHPチュートリアル > PHP 元のキー名を保持したまま値で配列をソートするにはどうすればよいですか?

PHP 元のキー名を保持したまま値で配列をソートするにはどうすればよいですか?

WBOY
リリース: 2024-05-04 08:06:02
オリジナル
753 人が閲覧しました

PHP では、連想配列を値で並べ替える 2 つの方法が提供されています。 asort() 関数を使用します。元のキー名を保持しながら、値を小さい値から大きい値に並べ替えます。 usort() 関数とクロージャの使用: 元のキー名を保持しながら、カスタム比較関数によって値を並べ替えます。

PHP 如何按值对数组进行排序,同时保留原始键名?

asort() 関数の使用

PHP の asort() 関数連想配列は、元のキー名を保持したまま値で並べ替えることができます。連想配列を引数として受け取り、値を最小値から最大値の順に並べ替えます。

<?php
$arr = [
    "apple" => 5,
    "banana" => 3,
    "orange" => 2,
    "grape" => 4,
];

asort($arr);

print_r($arr);
?>
ログイン後にコピー

出力:

Array
(
    [orange] => 2
    [banana] => 3
    [grape] => 4
    [apple] => 5
)
ログイン後にコピー
ログイン後にコピー

ご覧のとおり、配列の値は小さいものから大きいものへと並べ替えられていますが、キー名は変更されていません。

usort() 関数とクロージャの使用

もう 1 つの方法は、usort() 関数とクロージャ Bag を使用することです。 usort() 配列内の要素を比較するために使用されるコールバック関数をパラメーターとして受け入れます。クロージャは、コールバックとして使用できる匿名関数です。

<?php
$arr = [
    "apple" => 5,
    "banana" => 3,
    "orange" => 2,
    "grape" => 4,
];

usort($arr, function ($a, $b) {
    return $a[1] - $b[1];
});

print_r($arr);
?>
ログイン後にコピー

出力:

Array
(
    [orange] => 2
    [banana] => 3
    [grape] => 4
    [apple] => 5
)
ログイン後にコピー
ログイン後にコピー

この場合、クロージャは各要素の値 ($a[1]$b[1]#) を比較します。 ##)、どちらの値が大きいかに応じて、-10、または 1 を返します。

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

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新の問題
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート