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

PHP で多次元配列を値で並べ替えるにはどうすればよいですか?

Mary-Kate Olsen
Mary-Kate Olsenオリジナル
2024-12-23 12:21:11962ブラウズ

How to Sort a Multi-dimensional Array by Value in PHP?

値による多次元配列の並べ替え

多次元配列では、要素に基づいて要素を並べ替える必要が生じる場合があります。特定のキーの値。たとえば、次の配列について考えてみましょう。

Array
(
    [0] => Array
        (
            [hashtag] => a7e87329b5eab8578f4f1098a152d6f4
            [title] => Flower
            [order] => 3
        )

    [1] => Array
        (
            [hashtag] => b24ce0cd392a5b0b8dedc66c25213594
            [title] => Free
            [order] => 2
        )

    [2] => Array
        (
            [hashtag] => e7d31fc0602fb2ede144d18cdffd816b
            [title] => Ready
            [order] => 1
        )
)

「order」キーによる並べ替え

「order」キーによって配列を並べ替えるには、以下を使用できます。 usort() 関数。その使用法の包括的な内訳は次のとおりです:

PHP 5.2 以前:

最初に並べ替え関数を定義します:

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

PHP 5.3 以降:

匿名を使用する関数:

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

PHP 7:

宇宙船オペレーターの利用:

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

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;
});

キーの関連付け

キーの関連付けを維持する必要がある場合は、usort() の代わりに uasort() を使用します。

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

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