PHP 組み込み関数とカスタム コンパレータを使用すると、次の方法で多次元配列の並べ替えを行うことができます。 1. sort(): 最初の値で並べ替えます。 2. usort(): カスタム比較関数を使用して並べ替えます。 3. カスタム コンパレータ: 複雑な並べ替え用に Comparator インターフェイスを実装します。 4. 複合コンパレータ: 複数のコンパレータを組み合わせて、マルチフィールドのソートを実現します。製品カタログを価格順に並べ替えるなどの実用的なシナリオに適しています。
配列のソートは PHP では一般的なタスクですが、処理する際に混乱を招く可能性があります。多次元配列は複雑になります。この記事では、PHP の組み込み関数とカスタム コンパレータを使用して、多次元配列の高度な並べ替えを実装する方法を簡単かつ詳細に紹介します。
sort()
基本的な多次元配列の並べ替えには、sort()
を使用できます。関数。デフォルトでは、配列内の最初の値によるソートが行われます。例:
$multiArray = [ ['name' => 'John', 'age' => 30], ['name' => 'Jane', 'age' => 25], ]; sort($multiArray); // 结果:[ // ['name' => 'Jane', 'age' => 25], // ['name' => 'John', 'age' => 30], // ]
usort()
usort()
この関数では、次のことが可能です。カスタマイズ 配列を並べ替える比較関数。特定のフィールド (age
など) に基づいて比較する比較コールバック関数を定義できます。例:
usort($multiArray, function($a, $b) { return $a['age'] <=> $b['age']; }); // 结果:[ // ['name' => 'Jane', 'age' => 25], // ['name' => 'John', 'age' => 30], // ]
カスタム コンパレータはより柔軟です。必要に応じて、より複雑な並べ替えを実行できます。これを行うには、次のように Comparator
インターフェイスを実装するクラスを作成します。
class AgeComparator implements Comparator { public function compare($a, $b) { return $a['age'] <=> $b['age']; } }
次に、このコンパレータを使用して配列を並べ替えます。
usort($multiArray, new AgeComparator()); // 结果:[ // ['name' => 'Jane', 'age' => 25], // ['name' => 'John', 'age' => 30], // ]
複数のフィールドに基づいて並べ替えるには、複数のコンパレータの結果を組み合わせる複合コンパレータを使用できます。たとえば、年齢で並べ替えてから名前で並べ替えるには、次の複合コンパレータを使用できます:
class MultiFieldComparator implements Comparator { private $comparators = []; public function __construct(array $comparators) { $this->comparators = $comparators; } public function compare($a, $b) { foreach ($this->comparators as $comparator) { $result = $comparator->compare($a, $b); if ($result !== 0) { return $result; } } return 0; } }
次に、このコンパレータを使用して配列を並べ替えます:
$multiFieldComparator = new MultiFieldComparator([ new AgeComparator(), new NameComparator(), ]); usort($multiArray, $multiFieldComparator); // 结果:[ // ['name' => 'Jane', 'age' => 25], // ['name' => 'John', 'age' => 30], // ]
実際にはケース: 製品カタログの並べ替え
価格に基づいて製品を安いものから高いものまで並べ替える必要がある e コマース アプリケーションがあるとします。製品カタログは、名前、価格、数量などの製品情報を含む多次元配列です。
$products = [ ['name' => 'Product A', 'price' => 10], ['name' => 'Product B', 'price' => 15], ['name' => 'Product C', 'price' => 5], ];
価格の低い順に製品を並べ替えるには、次のコードを使用できます。
usort($products, function($a, $b) { return $a['price'] <=> $b['price']; });
このコードを実行すると、$products
配列が価格の小さい順に並べ替えられます。
以上がPHP 配列の多次元ソート狂想曲: 高度なソート技術をマスターするの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。