PHP を配列操作に使用する場合、並べ替えは最も一般的な操作の 1 つです。 PHP は、usort 関数を含むさまざまなソート関数を提供します。 usort 関数は、指定されたルールに従って配列を並べ替えることができますが、他の並べ替え関数とは異なり、ユーザーは並べ替えルールをカスタマイズできます。
この記事では、PHP での usort 関数の使用方法と、カスタム ソートに usort 関数を使用する方法を紹介します。
1. usort 関数の基本形式
usort 関数を使用して並べ替えを行う場合は、次の点に注意する必要があります。 2 つのパラメータが必要です。最初のパラメータは並べ替える必要がある配列で、2 番目のパラメータは並べ替えルールを定義するために使用されるコールバック関数です。
コールバック関数は、2 つの要素のサイズを比較するためのルールを定義する必要があります。具体的には、整数値を返す必要があります。戻り値の意味は次のとおりです: - 0 より大きいことを意味します最初の要素が 2 番目の要素より大きく、交換する必要があること。
- が 0 に等しい場合は、2 つの要素が等しいため交換する必要がないことを意味します。
- は 0 未満です。は、最初の要素が 2 番目の要素より小さいため、交換する必要がないことを意味します。位置を交換する必要があります。
-
- そういえば、PHP の匿名関数を理解する必要があります。匿名関数は、名前を持たないコードの一部であり、定義して変数に格納できます。
以下は usort 関数の基本的な形式です:
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 サイトの他の関連記事を参照してください。