PHPでは、 strnatcasecmpとarray_filter関数は、それぞれ自然な並べ替えとアレイフィルタリングのための2つの非常に実用的なツールです。これら2つの機能を組み合わせることで、特に文字列を含む並べ替えとフィルタリングアレイの自然な並べ替えとフィルタリングを簡単に実装できます。それらの組み合わせは、コードの読みやすさと効率を大幅に改善できます。
strnatcasecmp関数は、2つの文字列を比較し、「自然なソート」の順序で違いを返すために使用されます。いわゆる「自然な並べ替え」は、人間の習慣の順序で並べ替えることを意味します。たとえば、文字列「2」は「10」より先にあり、これは辞書の順序とは異なります。この関数はケースを無視し、自然な順序でソートする必要がある場合に適しています。
strnatcasecmp(string $str1, string $str2): int
STR1 :最初の文字列。
STR2 :2番目の文字列。
返品値: $ STR1が$ STR2未満の場合、負の数を返します。等しい場合、0を返します。 $ STR2を超える場合は、正の数を返します。
array_filter関数は、配列内の要素をフィルタリングするために使用されます。指定されたコールバック関数に従って配列を通過し、基準を満たす要素を返します。この関数は、特定のルールに準拠する配列要素をフィルタリングするのに非常に適しています。
array_filter(array $array, callable $callback, int $mode = 0): array
$配列:入力配列。
$ callback :フィルタリングに使用されるコールバック関数。コールバック関数が提供されていない場合、 array_filterはすべての要素をfalsの値で削除します。
$モード:オプション、配列内のキーを処理する方法を指定します。デフォルトは0です。つまり、元の配列を保持するキーです。
戻り値:フィルター付き配列。
数字と文字の両方のファイル名を含む配列があるとします。これらのファイル名を自然に並べ替え、特定のキーワード(「テスト」などのファイルをフィルタリングします。
<?php
// ファイル名の配列があるとします
$files = [
"file10.txt",
"file2.txt",
"file1.txt",
"testFile1.txt",
"testFile2.txt",
"file20.txt"
];
// 使用array_filterインクルージョンを除外します"test"ファイル
$filteredFiles = array_filter($files, function($file) {
return stripos($file, 'test') !== false;
});
// 使用strnatcasecmp自然なソートを行います
usort($filteredFiles, 'strnatcasecmp');
// 输出筛选和排序后ファイル列表
echo "筛选和排序后ファイル列表:\n";
foreach ($filteredFiles as $file) {
echo $file . "\n";
}
?>
フィルターファイル: array_filter関数を使用して配列をフィルタリングし、「テスト」を含むファイル名をフィルタリングします。 StripOS関数は、ファイル名に「テスト」が含まれているかどうかをケースチェックを無視するために使用されます。
自然な並べ替え:次に、 USORT関数を使用して、フィルタリングされたファイルを自然にソートします。 Usortは比較関数を引数として受け入れます。ここでは、自然なソートにStrnatcasecmpを使用します。
出力の結果:最後に、フィルタリングされたファイル名とソートされたファイル名を出力します。
筛选和排序后ファイル列表:
testFile1.txt
testFile2.txt
strnatcasecmpとarray_filter関数を組み合わせることにより、アレイの要素を非常に便利に並べ替えてフィルタリングすることができます。 strnatcasecmpは、人間の習慣の並べ替え方法を提供しますが、 array_filterを使用すると、基準を満たす要素を効率的に除外できます。 2つの組み合わせは、ソートとフィルタリング操作が必要なさまざまなシナリオに適した、コードを簡素化し、読みやすさを向上させることができます。