ホームページ  >  記事  >  バックエンド開発  >  PHP 多次元配列ソートの次元の旅: 1 次元から多次元へ

PHP 多次元配列ソートの次元の旅: 1 次元から多次元へ

王林
王林オリジナル
2024-04-29 21:09:02295ブラウズ

1 次元配列は sort() 関数を使用してソートし、2 次元配列は usort() 関数を使用して内部要素でソートし、高次元配列は多層ネストされた usort() 関数を使用して階層別にソートします。要素を分解し、層ごとに解決することが重要です。

PHP 多次元配列ソートの次元の旅: 1 次元から多次元へ

PHP 多次元配列ソートの次元の旅: 1 次元から多次元へ

PHP では、配列は次のことができる強力なデータ構造です。多次元配列を含むさまざまな種類のデータを保存します。多次元配列は、他の配列を含む配列であり、これにより複雑なデータ構造を作成できます。

多次元配列の並べ替えは難しい作業になる可能性がありますが、その背後にある概念を理解することが重要です。この記事では、次元への旅をし、PHP 組み込み関数を使用して 1 次元、2 次元、およびそれ以上の次元の多次元配列を並べ替える方法を学びます。

1 次元配列のソート

1 次元配列のソートは最も単純な形式です。 sort() 関数を使用すると、配列内の要素を昇順に並べ替えることができます。

<?php
$arr = [5, 2, 8, 3, 1];
sort($arr);
print_r($arr); // 输出:[1, 2, 3, 5, 8]
?>

2 次元配列の並べ替え

2 次元配列の並べ替えは少し複雑です。内部配列の要素に基づいて並べ替えることができます。たとえば、生徒の成績を含む 2 次元配列があるとします。

<?php
$students = [
    ['name' => 'Alice', 'score' => 90],
    ['name' => 'Bob', 'score' => 80],
    ['name' => 'Carol', 'score' => 70]
];
?>

生徒を成績に基づいて降順に並べ替えるには、usort() 関数を使用できます。

<?php
usort($students, function($a, $b) {
    return $b['score'] <=> $a['score'];
});
print_r($students); // 输出:[
                        //     ['name' => 'Alice', 'score' => 90],
                        //     ['name' => 'Bob', 'score' => 80],
                        //     ['name' => 'Carol', 'score' => 70]
                        // ]
?>

高次元配列のソート

ソートの概念は高次元配列でも同じです。たとえば、3 人の学生のクラスに関する情報を含む 3 次元配列を考えてみましょう。

<?php
$classes = [
    [
        ['name' => 'Alice', 'grade' => 'A'],
        ['name' => 'Bob', 'grade' => 'B'],
        ['name' => 'Carol', 'grade' => 'C']
    ],
    [
        ['name' => 'Dave', 'grade' => 'A'],
        ['name' => 'Eve', 'grade' => 'B'],
        ['name' => 'Frank', 'grade' => 'C']
    ],
    [
        ['name' => 'George', 'grade' => 'A'],
        ['name' => 'Helen', 'grade' => 'B'],
        ['name' => 'Ian', 'grade' => 'C']
    ]
];
?>

学生の成績に基づいて 3 つのクラスすべてを降順に並べ替えるには、複数レベルの usort を使用できます。 ( ) 関数のネスト:

<?php
usort($classes, function($a, $b) {
    usort($a, function($c, $d) {
        return $d['grade'] <=> $c['grade'];
    });
    usort($b, function($c, $d) {
        return $d['grade'] <=> $c['grade'];
    });
    return $b[0]['grade'] <=> $a[0]['grade'];
});
print_r($classes); // 输出:[
                        //     [
                        //         ['name' => 'Alice', 'grade' => 'A'],
                        //         ['name' => 'Bob', 'grade' => 'B'],
                        //         ['name' => 'Carol', 'grade' => 'C']
                        //     ],
                        //     [
                        //         ['name' => 'Dave', 'grade' => 'A'],
                        //         ['name' => 'Eve', 'grade' => 'B'],
                        //         ['name' => 'Frank', 'grade' => 'C']
                        //     ],
                        //     [
                        //         ['name' => 'George', 'grade' => 'A'],
                        //         ['name' => 'Helen', 'grade' => 'B'],
                        //         ['name' => 'Ian', 'grade' => 'C']
                        //     ]
                        // ]
?>

多次元配列の並べ替えを理解する鍵は、問題を分解し、ネストされた usort() 関数を使用して層ごとに解決することです。このようにして、任意の次元を持つ複雑なデータ構造を簡単に並べ替えることができます。

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

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