多次元 PHP 配列を複数のフィールドでソートするにはどうすればよいですか?

Patricia Arquette
リリース: 2024-11-20 03:07:01
オリジナル
633 人が閲覧しました

How to Sort a Multidimensional PHP Array by Multiple Fields?

PHP での複数のフィールド値による配列の並べ替え

問題:

複雑なデータ構造を持つ配列であり、複数のフィールド値に基づいて値を昇順に並べ替える必要があります。

例:

次の配列について考えてみましょう:

$array = [
    [
        "destination" => "Sydney",
        "airlines" => "airline_1",
        "one_way_fare" => 100,
        "return_fare" => 300
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_2",
        "one_way_fare" => 150,
        "return_fare" => 350
    ],
    [
        "destination" => "Sydney",
        "airlines" => "airline_3",
        "one_way_fare" => 180,
        "return_fare" => 380
    ]
];
ログイン後にコピー

この配列を、最初に「return_fare」で昇順に並べ替え、次に「one_way_fare」でも昇順で並べ替えたいとします。

解決策:

説明どおりに配列を並べ替えるには、array_multisort() 関数を使用できます。ただし、並べ替えたい値を抽出して別の配列に入れる必要があります。これは、array_column() を使用して実行できます。

// Extract "return_fare" and "one_way_fare" into separate arrays
$return_fare = array_column($array, 'return_fare');
$one_way_fare = array_column($array, 'one_way_fare');

// Sort the array using multiple criteria
array_multisort($return_fare, SORT_ASC, $one_way_fare, SORT_ASC, $array);
ログイン後にコピー

並べ替え後、$array は並べ替えられた順序を反映するように変更されます。

代替解決策:

PHP のマニュアル ページの array_orderby() 関数を使用して、上記のコードを簡略化することもできます。

// Sort the array using "array_orderby"
$sorted = array_orderby($array, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
ログイン後にコピー

注:

を使用している場合PHP 5.5 以降では、array_column() を array_multisort():

array_multisort(
    array_column($array, 'return_fare'), SORT_ASC,
    array_column($array, 'one_way_fare'), SORT_ASC,
    $array
);
ログイン後にコピー
と直接使用することでループを回避できます。

以上が多次元 PHP 配列を複数のフィールドでソートするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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