ホームページ >バックエンド開発 >PHPチュートリアル >PHP で usort 関数を使用して配列をカスタムソートする方法
PHP を配列操作に使用する場合、並べ替えは最も一般的な操作の 1 つです。 PHP は、usort 関数を含むさまざまなソート関数を提供します。 usort 関数は、指定されたルールに従って配列を並べ替えることができますが、他の並べ替え関数とは異なり、ユーザーは並べ替えルールをカスタマイズできます。
この記事では、PHP での usort 関数の使用方法と、カスタム ソートに usort 関数を使用する方法を紹介します。
1. usort 関数の基本形式
usort 関数を使用して並べ替えを行う場合は、次の点に注意する必要があります。 2 つのパラメータが必要です。最初のパラメータは並べ替える必要がある配列で、2 番目のパラメータは並べ替えルールを定義するために使用されるコールバック関数です。
usort(array &$array, callable $cmp_function)このうち、$array はソートが必要な配列で、$cmp_function はソートの定義に使用されるコールバック関数です。ルール。 2. usort 関数の使用例 usort 関数の使用例を見てみましょう。
<?php $fruits = array("apple", "banana", "orange", "peach"); function cmp($a, $b) { return strlen($a) - strlen($b); } usort($fruits, "cmp"); print_r($fruits); ?>上の例では、最初に 4 つのフルーツを含む配列 $fruits を定義しました。次に、コールバック関数 cmp を定義して、文字列の長さを小さいものから大きいものに並べ替えるルールを実装します。 usort 関数では、$fruits 配列と cmp 関数をパラメータとして渡します。関数の実行後、$fruits 配列は文字列の長さの規則に従って小さい順から大きい順に並べ替えられます。 実行結果は次のとおりです:
Array ( [0] => apple [1] => peach [2] => banana [3] => orange )3. カスタム ソートには usort 関数を使用します通常のソートに usort 関数を使用することに加えて、次のように定義することもできます。独自のニーズに応じたカスタム並べ替え 並べ替えルールを定義します。 以下は例で、usort 関数を使用して、人の名前と年齢を含む 2 次元配列を年齢の昇順に並べ替えます。
<?php $people = array( array('name' => 'Jim', 'age' => 23), array('name' => 'Tom', 'age' => 18), array('name' => 'Lucy', 'age' => 26), array('name' => 'Lily', 'age' => 20), ); function cmp($a, $b) { return $a['age'] - $b['age']; } usort($people, "cmp"); print_r($people); ?>上の例では、名前と年齢という 2 つのフィールドを含む 2 次元配列 $people を定義しました。次に、コールバック関数 cmp を定義して、年齢による小から大への並べ替えルールを実装します。関数で返されるのは $a['age'] - $b['age'] です。これは、配列が年齢によって小さいものから大きいものへと並べ替えられることを意味します。 実行結果は次のとおりです:
Array ( [0] => Array ( [name] => Tom [age] => 18 ) [1] => Array ( [name] => Lily [age] => 20 ) [2] => Array ( [name] => Jim [age] => 23 ) [3] => Array ( [name] => Lucy [age] => 26 ) )定義したルールに従って、$people 配列が年齢別に小さいものから大きいものへと並べ替えられていることがわかります。 上記の例を通じて、usort 関数には非常に強力なカスタム並べ替え機能があることがわかり、コールバック関数を定義するだけでさまざまな並べ替えルールを実装できます。ただし、コールバック関数が適切に動作することを保証するには、コールバック関数が整数値を返す必要があることに注意してください。
以上がPHP で usort 関数を使用して配列をカスタムソートする方法の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。