【PHP8.x】uksortメソッドの使い方

uksortメソッドの使い方について、初心者にもわかりやすく解説します。

作成日: 更新日:

基本的な使い方

uksortメソッドは、ユーザーが定義した比較関数を用いて、ArrayObjectオブジェクトの要素をキーに基づいてソート(並べ替え)を実行するメソッドです。このメソッドは、単純なアルファベット順や数値順ではなく、開発者が指定した独自のルールに従ってキーを並べ替えたい場合に非常に便利です。ソートを実行するには、引数として比較ロジックを実装したコールバック関数を渡す必要があります。このコールバック関数は、比較する2つのキーを引数として受け取ります。そして、1つ目のキーが2つ目のキーより小さいと判断した場合は負の整数、両者が等しい場合は0、1つ目が大きい場合は正の整数を返すように実装します。uksortメソッドは、このコールバック関数が返す値に基づいて、全てのキーの正しい順序を決定します。このソート処理はオブジェクトの内容を直接変更し、キーと値の関連付けは維持されます。メソッドの実行が成功した場合、PHP 8以降では常にtrueが返されます。これにより、複雑な順序付けが必要なキーを持つデータ構造も柔軟に扱うことが可能になります。

構文(syntax)

1<?php
2
3// ソート対象の ArrayObject を作成します
4$arrayObject = new ArrayObject([
5    'lemon' => 1,
6    'orange' => 2,
7    'banana' => 3,
8    'apple' => 4,
9]);
10
11// キーを文字列の長さで比較する関数を定義します
12$keyCompareFunc = function (string $key1, string $key2): int {
13    return strlen($key1) <=> strlen($key2);
14};
15
16// ユーザー定義の関数を使って、キーで配列をソートします
17$arrayObject->uksort($keyCompareFunc);
18
19// ソート結果を出力します
20print_r($arrayObject);
21
22?>

引数(parameters)

callable $callback

  • callable $callback: 配列のキーをソートする比較関数。2つの引数を受け取り、それらを比較した結果を整数で返します。

戻り値(return)

true

uksort メソッドは、配列のキーをソートする操作が成功したかどうかを示す真偽値 (true) を返します。