ホームページ >バックエンド開発 >PHPチュートリアル >PHP 配列の多次元ソートの黒魔術: その背後にある原理を明らかにする

PHP 配列の多次元ソートの黒魔術: その背後にある原理を明らかにする

WBOY
WBOYオリジナル
2024-04-29 15:33:02778ブラウズ

PHP 多次元配列の並べ替え Black Magic: カスタム関数 Compare_students を使用して、名前と成績に基づいて並べ替えます。並べ替えは、usort() 関数を介して実行されます。 PHP 7.4 の UAC は、匿名クラスを実装するためのよりクリーンな方法を提供します。カスタム関数は入力配列を比較し、名前で昇順、グレードで降順に並べ替えます。

PHP 配列の多次元ソートの黒魔術: その背後にある原理を明らかにする

#PHP 配列の多次元ソートの黒魔術: 秘密の原理を明らかにする

PHP における多次元ソート配列の計算は、一見複雑なタスクのように見える楽しいタスクです。ただし、適切なテクニックを習得し、その背後にある原理を理解すれば、この黒魔術を簡単に習得できるようになります。

実際的なケース

学生データを含む配列があり、その配列を姓と学年で並べ替えたいとします。

$students = [
    ['name' => 'Alice', 'score' => 90],
    ['name' => 'Bob', 'score' => 85],
    ['name' => 'Charlie', 'score' => 95],
    ['name' => 'Dave', 'score' => 80],
];

カスタム関数に基づいて並べ替え

カスタム関数

compare_students を使用して、2 つの学生レコードを姓と成績で比較できます。並べ替え:

function compare_students($a, $b) {
    if ($a['name'] == $b['name']) {
        return $a['score'] <=> $b['score'];
    }
    return strcmp($a['name'], $b['name']);
}

次に、

usort() 関数を使用して配列を並べ替えます。

usort($students, 'compare_students');

UAC に基づく

PHP 7.4 で導入ユーザー定義匿名クラス (UAC) は、別のより簡潔な実装メソッドを提供します:

uasort($students, function($a, $b) {
    if ($a['name'] == $b['name']) {
        return $a['score'] <=> $b['score'];
    }
    return strcmp($a['name'], $b['name']);
});

Principle Revealed

Custom Function

compare_students 2 つの入力配列 $a$b の順序を値に基づいて比較するコールバック関数。

この関数は、まず 2 人の生徒が同じ名前かどうかを確認します。その場合、成績を比較して降順に並べ替えます。

そうでない場合は、

strcmp() 関数を使用して生徒の名前を比較し、昇順に並べ替えます。

実用的なアプリケーション

ここで、

$students 配列を出力すると、姓と成績でソートされた結果が得られます。 <pre class='brush:php;toolbar:false;'>print_r($students);</pre> 出力結果:

Array
(
    [0] => Array
        (
            [name] => Alice
            [score] => 90
        )

    [1] => Array
        (
            [name] => Bob
            [score] => 85
        )

    [2] => Array
        (
            [name] => Charlie
            [score] => 95
        )

    [3] => Array
        (
            [name] => Dave
            [score] => 80
        )

)

以上がPHP 配列の多次元ソートの黒魔術: その背後にある原理を明らかにするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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