自然な種類は、文字通りの文字通りの順序に従ってソートする方法です。従来のアルファベット順のソートとは異なり、 natsort()は、数字のサイズ関係を考慮しています。例えば:
file1.txtはfile2.txtの前にあります
file10.txtは、 file2.txtの背後にランク付けされています
このソート方法は、単純なアルファベット順のソートよりも、毎日の考え方に沿っています。
まず、ファイル名を含む配列が必要です。一般に、 Scandir()関数を使用して、すべてのファイル名をディレクトリ内に取得できます。
$files = scandir('path/to/your/directory');
このコードは、ディレクトリ内のすべてのファイルとサブディレクトリの名前を含む配列を返します。 Scandir()は2つの特別なディレクトリを返すことに注意してください。そして..デフォルトでは、それらをフィルタリングする必要がある場合があります。
Filename配列を取得したら、 NATSORT()関数を呼び出して配列をソートできます。
natsort($files);
natsort()はファイル名を自然に並べ替えて、「file1.txt」が「file10.txt」の先になるようにします。
並べ替えが完了した後、ソートされたファイル名を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()を使用して並べ替えて、 array_reverse()関数を使用できます。
natsort()はケースに敏感であり、ファイル名に大文字が含まれている場合、ソート結果に影響を与える可能性があります。ケースソートを無視する必要がある場合は、 natsort()を呼び出す前に、ファイル名を統一小文字または大文字に変換できます。
例えば:
// ファイル名を小文字に変換します
$files = array_map('strtolower', $files);
natsort($files);