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

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

作成日: 更新日:

基本的な使い方

『uasortメソッドは、ArrayObjectの要素を、ユーザーが定義した比較関数を用いて値でソートし、キーと値の関連性を維持する処理を実行するメソッドです。このメソッドは、単純な昇順や降順だけでなく、独自の複雑なルールに基づいて配列のように振る舞うオブジェクトを並べ替えたい場合に役立ちます。引数には、比較ロジックを定義したコールバック関数を指定します。この関数は2つの引数を受け取り、内部でそれらを比較します。そして、最初の引数が2番目の引数より小さい場合は負の整数、等しい場合は0、大きい場合は正の整数を返すように実装する必要があります。uasortメソッドの重要な特徴は、ソート後も各要素のキー(インデックス)が元の値との対応関係を保つ点です。これにより、連想配列のようなデータ構造でキー情報を失うことなく、値に基づいた並べ替えが可能です。メソッドの実行が成功した場合はtrueを返します。オブジェクトの特定のプロパティを基準にソートするなど、柔軟な並べ替え処理を実現する際に非常に便利な機能です。

構文(syntax)

1<?php
2
3// ソート対象の連想配列でArrayObjectを初期化します
4$inventory = new ArrayObject([
5    'oranges' => 3,
6    'apples' => 10,
7    'bananas' => 5
8]);
9
10// ユーザー定義の比較関数を使用して、
11// キーと値の関連を維持したまま値(在庫数)でソートします。
12$inventory->uasort(function (int $a, int $b): int {
13    // 宇宙船演算子を使って比較し、-1, 0, 1のいずれかを返します。
14    return $a <=> $b;
15});
16
17print_r($inventory);
18
19?>

引数(parameters)

callable $callback

  • callable $callback: 並べ替えの比較に使用されるコールバック関数

戻り値(return)

bool

ArrayObject::uasort は、指定されたコールバック関数を使用してArrayObjectの要素をキーを保持したままソートし、ソートが成功した場合は true を、失敗した場合は false を返します。