natsort

関数の概要

PHPの natsort 関数は、配列を「自然順序(ナチュラルオーダー)」でソートします。自然順序とは、人間が通常文字列を順序付ける感覚に合わせた並び替えで、特に数字が含まれている文字列を適切に比較します。例えば、「file2」「file10」「file1」といった文字列の配列をソートすると、「file1」「file2」「file10」の順になります。

パラメータの説明

  • array &$array
    ソート対象の配列を指定します。配列は連想配列も対応しています。参照渡しされるため、この配列自体がソートされます。

戻り値

成功した場合は TRUE を返し、失敗した場合は FALSE を返します。ソート処理は渡した配列に対して直接行われるため、返値よりも配列の変化を確認することが一般的です。

使用例

基本的な使い方

<?php
$files = ["file10.txt", "file2.txt", "file1.txt"];
natsort($files);
print_r($files);
?>

出力結果は
Array ( [2] => file1.txt [1] => file2.txt [0] => file10.txt )
となり、数字部分を適切に認識してソートされていることが分かります。

連想配列でも自然順ソートが可能

<?php
$items = [
    "a" => "item20",
    "b" => "item3",
    "c" => "item100",
    "d" => "item1"
];
natsort($items);
print_r($items);
?>

キーは保持されたまま値で自然順ソートされます。出力は
Array ( [d] => item1 [b] => item3 [a] => item20 [c] => item100 )となります。

ファイル名のリストを自然順序で並び替えてループ処理

<?php
$logs = ["log1.txt", "log10.txt", "log2.txt"];
natsort($logs);
foreach ($logs as $log) {
    echo $log . "<br>";
}
?>

出力は自然な順序で
log1.txt
log2.txt
log10.txt
となります。ユーザーに見やすいファイル一覧を表示するときに便利です。

関連する関数

  • sort() — 通常の文字列ソート
  • asort() — キーを保持して値をソート
  • ksort() — キーを自然順でソートしたい場合に使う
  • natcasesort() — 大文字・小文字を区別しない自然順ソート
  • usort() — 任意の比較関数でソート

まとめ

natsort は数字が含まれる文字列の配列を人間にとって自然な順序でソートしたい場合に役立つ関数です。ファイル名やバージョン番号、ラベルなどの並び替えに便利で、キーを保持したまま並べ替えが可能です。PHPの組み込み関数なので手軽に使え、ユーザー目線の分かりやすい表示を実現できます。