現在の位置: ホーム> 最新記事一覧> Natsort、詳細な手順を介してファイル名の自然な並べ替えを実現する方法

Natsort、詳細な手順を介してファイル名の自然な並べ替えを実現する方法

gitbox 2025-06-09

自然なソートとは何ですか?

自然な種類は、文字通りの文字通りの順序に従ってソートする方法です。従来のアルファベット順のソートとは異なり、 natsort()は、数字のサイズ関係を考慮しています。例えば:

  • file1.txtはfile2.txtの前にあります

  • file10.txtは、 file2.txtの背後にランク付けされています

このソート方法は、単純なアルファベット順のソートよりも、毎日の考え方に沿っています。


Natsortを使用して、ファイル名を自然に並べ替えます

ステップ1:ファイル名配列を取得します

まず、ファイル名を含む配列が必要です。一般に、 Scandir()関数を使用して、すべてのファイル名をディレクトリ内に取得できます。

 $files = scandir('path/to/your/directory');

このコードは、ディレクトリ内のすべてのファイルとサブディレクトリの名前を含む配列を返します。 Scandir()は2つの特別なディレクトリを返すことに注意してくださいそして..デフォルトでは、それらをフィルタリングする必要がある場合があります。

ステップ2:Natsortを使用してファイル名を並べ替えます

Filename配列を取得したら、 NATSORT()関数を呼び出して配列をソートできます。

 natsort($files);

natsort()はファイル名を自然に並べ替えて、「file1.txt」が「file10.txt」の先になるようにします。

ステップ3:ソートされたファイル名を表示します

並べ替えが完了した後、ソートされたファイル名をforeachループから出力できます。

 foreach ($files as $file) {
    echo $file . "\n";
}

このようにして、自然な順序で配置されたファイル名のリストを見ることができます。


サンプルコード

上記の手順を組み合わせて、最終コードは次のとおりです。

 <?php

// ディレクトリ内のすべてのファイルを取得します
$files = scandir('path/to/your/directory');

// 取り除く . そして .. 目次
$files = array_diff($files, array('.', '..'));

// 使用 natsort ファイル名をソートします
natsort($files);

// ソートされたファイル名を出力します
foreach ($files as $file) {
    echo $file . "\n";
}

?>

出力の例

ディレクトリに次のファイルがあるとします。

 file1.txt
file10.txt
file2.txt
file20.txt

natsort()で並べ替えた後、出力は次のとおりです。

 file1.txt
file2.txt
file10.txt
file20.txt

natsortとnatsort()に関するメモ

  • NATSORT()関数は元の配列を直接変更するため、呼び出す前に新しい配列に値を割り当てる必要はありません。

  • 逆ソートが必要な場合は、 natsort()を使用して並べ替えて、 array_reverse()関数を使用できます。

  • natsort()はケースに敏感であり、ファイル名に大文字が含まれている場合、ソート結果に影響を与える可能性があります。ケースソートを無視する必要がある場合は、 natsort()を呼び出す前に、ファイル名を統一小文字または大文字に変換できます。

例えば:

 // ファイル名を小文字に変換します
$files = array_map('strtolower', $files);
natsort($files);