ホームページ > バックエンド開発 > PHPチュートリアル > PHP 配列を複数のフィールドで並べ替えるにはどうすればよいですか?

PHP 配列を複数のフィールドで並べ替えるにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-22 10:18:11
オリジナル
540 人が閲覧しました

How to Sort a PHP Array by Multiple Fields?

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

質問:

PHP で配列を並べ替えるにはどうすればよいですか? 2 つ以上のフィールド値。 SQL?

配列の例:

$data = [
    [
        "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".

答え:

複数のフィールド値で配列を並べ替える正しい PHP 関数は、array_multisort() です。目的の並べ替えを実現する方法の例を次に示します。

// Extract the relevant columns
$return_fare = array_column($data, 'return_fare');
$one_way_fare = array_column($data, 'one_way_fare');

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

array_orderby() による使用法の簡略化

次の array_orderby() 関数を使用してコードを簡素化できます。 PHP マニュアル:

$sorted = array_orderby($data, 'return_fare', SORT_ASC, 'one_way_fare', SORT_ASC);
ログイン後にコピー

配列配列の使用 (ループと array_column())

配列に配列が含まれている場合、並べ替えの前にループを使用して関連する値を抽出できます。

$return_fare = [];
$one_way_fare = [];

foreach ($data as $row) {
    $return_fare[] = $row['return_fare'];
    $one_way_fare[] = $row['one_way_fare'];
}
ログイン後にコピー

または、 PHP 5.5 以降を使用すると、array_column():

array_multisort(array_column($data, 'return_fare'), SORT_ASC,
                array_column($data, 'one_way_fare'), SORT_ASC,
                $data);
ログイン後にコピー
を使用できます。

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

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