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

WBOY
リリース: 2024-04-29 15:33:02
オリジナル
665 人が閲覧しました

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_students2 つの入力配列$a$bの順序を値に基づいて比較するコールバック関数。

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

そうでない場合は、

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

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

ここで、

$students配列を出力すると、姓と成績でソートされた結果が得られます。

print_r($students);
ログイン後にコピー
出力結果:

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 サイトの他の関連記事を参照してください。

関連ラベル:
ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!