関数の概要
array_multisort は、PHPで複数の配列を同時にソートするための関数です。複数の配列を連動させて並び替えたい場合に有効で、主に複数の基準でデータを整列させたいときに使われます。例えば、複数の関連配列を1つの基準で昇順または降順に並べ替えたい場合に便利です。
パラメータの説明
- array1:ソート対象となる1つ目の配列(必須)。参照渡しで渡します。
- sort_order1:1つ目の配列のソート順序。
SORT_ASC(昇順)かSORT_DESC(降順)。省略するとSORT_ASC。 - sort_flags1:ソート方法の指定。
SORT_REGULAR(通常の文字列/数値比較)、SORT_NUMERIC(数値比較)、SORT_STRING(文字列比較)など。省略可能。 - array2, sort_order2, sort_flags2, …:続けて複数の配列やソート方法を指定できます。各配列は必ず参照渡しで指定し、ソート順やフラグも配列ごとに設定可能です。
戻り値
成功すると true を返します。処理に失敗すると false を返します。配列自体は引数で渡したものが直接並び替えられます。
使用例
基本的な使い方(単一配列を昇順にソート)
<?php
$numbers = [3, 2, 5, 1];
array_multisort($numbers);
print_r($numbers);
?>
配列 $numbers が昇順(1, 2, 3, 5)にソートされます。
複数配列の連動ソート(昇順・昇順)
<?php
$names = ['taro', 'hanako', 'jiro'];
$ages = [30, 25, 35];
array_multisort($ages, SORT_ASC, $names, SORT_ASC);
print_r($ages);
print_r($names);
?>
年齢 $ages を基準に昇順に並べ替え、年齢に合わせて $names も同じ順序でソートされます。結果、25歳のhanako、30歳のtaro、35歳のjiroの順になります。
複数配列の連動ソート(年齢昇順、名前降順)
<?php
$names = ['taro', 'hanako', 'jiro', 'kenta'];
$ages = [30, 25, 30, 25];
array_multisort($ages, SORT_ASC, $names, SORT_DESC);
print_r($ages);
print_r($names);
?>
まず年齢で昇順に並べ、同じ年齢の人は名前で降順に並べ替えます。この場合、25歳はkentaとhanakoですが、名前の降順なのでkentaが先になります。
数値と文字列の組み合わせを数値としてソートする例
<?php
$array1 = ['10', '2', '30', '20'];
array_multisort($array1, SORT_NUMERIC);
print_r($array1);
?>
文字列として表されている数値を数値として比較し昇順にソートします(結果は2, 10, 20, 30)。
関連する関数
- sort
- asort
- ksort
- array_sort
- usort
まとめ
array_multisort は複数の配列を連動させて効率よく並べ替えるための強力な関数です。複数の基準でソートしたい場合や、関連データを一緒に管理するときに役立ちます。ソート順やソート方法を細かく設定できるため、実用的で柔軟な並び替え処理が可能です。配列の参照渡しで動作するので、元の配列が直接書き換えられる点に注意しましょう。
