ホームページ >バックエンド開発 >PHPチュートリアル >PHP で多次元配列を特定のキーでソートするには?

PHP で多次元配列を特定のキーでソートするには?

Patricia Arquette
Patricia Arquetteオリジナル
2024-12-20 11:35:08113ブラウズ

How to Sort a Multi-Dimensional Array in PHP by a Specific Key?

特定のキーによる多次元配列の並べ替え

特定のキー値による多次元配列の並べ替えは、次のさまざまな方法を使用して実現できます。 PHP。この手法を使用して、一般的な問題とその解決策を検討してみましょう。

問題:

「order」キーに基づいて配列を並べ替えるにはどうすればよいですか?

配列構造:

$myArray = [
    [
        'hashtag' => 'a7e87329b5eab8578f4f1098a152d6f4',
        'title'   => 'Flower',
        'order'   => 3
    ],
    [
        'hashtag' => 'b24ce0cd392a5b0b8dedc66c25213594',
        'title'   => 'Free',
        'order'   => 2
    ],
    [
        'hashtag' => 'e7d31fc0602fb2ede144d18cdffd816b',
        'title'   => 'Ready',
        'order'   => 1
    ]
];

解決策:

1.カスタム関数での usort の使用:

この方法には、「順序」値を比較し、適切な比較結果を返すカスタム並べ替え関数の定義が含まれます。

function sortByOrder($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
}

usort($myArray, 'sortByOrder');

2.匿名関数の使用:

PHP 5.3 以降では、カスタム並べ替え関数を簡素化するために匿名関数を使用できます。

usort($myArray, function($a, $b) {
    if ($a['order'] > $b['order']) {
        return 1;
    } elseif ($a['order'] < $b['order']) {
        return -1;
    }
    return 0;
});

3. Spaceship オペレーターの使用 (PHP 7 以降):

PHP 7 では、簡潔な比較演算のために Spaceship オペレーター (< =>) が導入されました。

usort($myArray, function($a, $b) {
    return $a['order'] <=> $b['order'];
});

4.アロー関数の使用 (PHP 7.4 以降):

アロー関数は、function キーワードを削除することでコードをさらに簡略化します。

usort($myArray, fn($a, $b) => $a['order'] <=> $b['order']);

多次元ソート:

入れ子構造を持つ配列の場合、ソート関数を拡張して複数を考慮することができます。キー。これにより、「サブオーダー」内の「順序」によるソートなど、複雑なソートが可能になります。

usort($myArray, function($a, $b) {
    $retval = $a['order'] <=> $b['order'];
    if ($retval == 0) {
        $retval = $a['suborder'] <=> $b['suborder'];
        if ($retval == 0) {
            $retval = $a['details']['subsuborder'] <=> $b['details']['subsuborder'];
        }
    }
    return $retval;
});

注: キーの関連付けを維持する必要がある場合は、代わりに uasort() の使用を検討してください。 usort().

以上がPHP で多次元配列を特定のキーでソートするには?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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