strnatcasecmpは、PHPの非常に実用的な文字列比較関数です。自然な順序付けアルゴリズムを使用し、ケース非感受性です。自然なソートは、辞書の順序で文字列を並べ替えることだけではありません。数字のサイズを考慮し、人間の並べ替え習慣に沿ったものになる可能性があります。今日は、strnatcasecmp関数を使用して複数のパラメーターを自然に並べ替える方法について説明します。
strnatcasecmp関数は、2つの文字列(症例非感受性)が自然なソート順に準拠し、整数値を返すかどうかを比較するために使用されます。
0を返して、2つの文字列が等しいことを示します
最初の文字列が2番目の文字列よりも小さいことを意味する負の値を返します
最初の文字列が2番目の文字列よりも大きいことを意味する正の値を返します
基本的な構文は次のとおりです。
int strnatcasecmp ( string $string1 , string $string2 )
実際のアプリケーションでは、多くの場合、複数の文字列を並べ替える必要があります。 PHPは、自然な並べ替えを実現するために、 USORT関数とStRNATCASECMPを提供します。 Strnatcasecmpを使用して複数の文字列を並べ替える方法を示す例を以下に示します。
<?php
// ソートされる文字列の配列
$array = array(
"img20.jpg",
"img3.jpg",
"img100.jpg",
"img12.jpg",
"img1.jpg"
);
// 使用 usort そして strnatcasecmp ソート配列
usort($array, 'strnatcasecmp');
// 出力ソートされた結果
foreach ($array as $file) {
echo $file . "<br>";
}
?>
上記のコードでは、複数のファイル名を含む配列$配列が最初に定義されています。これらのファイル名には数値部品が含まれており、自然なソートを実現できるのはstrnatcasecmpを介しています。次に、 USORT関数を使用してArrayをStrnatCaseCMPでソートし、最後にソートされたファイル名を出力します。
strnatcasecmpの特徴は、それがケースに敏感ではないことであるため、ソートプロセス中の文字の症例問題を自動的に無視することです。たとえば、配列にIMG1.jpgとIMG1.jpgがある場合、それらは等しいと見なされます(自然な並べ替えでは、 IMG1.jpgはIMG10.jpgよりも先になります)。
カスタムソート関数によって複数のパラメーターを並べ替えることができます。さまざまなタイプの文字列の配列の自然な並べ替えにstrnatcasecmpを使用する方法を示す例を以下に示します。
<?php
// カスタムソート関数を定義します
function customSort($a, $b) {
return strnatcasecmp($a, $b);
}
// ソートする配列
$array = array(
"a20", "a2", "a10", "b1", "b10"
);
// 使用 uasort ソート
uasort($array, 'customSort');
// 出力ソートされた結果
foreach ($array as $value) {
echo $value . "<br>";
}
?>
この例では、 UASORT関数とstrnatcasecmpを使用して、文字と数字を含む配列を並べ替えます。配列内の要素が自然に配置されていることがわかります。
URLを含む文字列アレイを自然に並べ替える必要がある場合、 strnatcasecmpはうまく機能します。ドメイン名を持つURLのセットがあり、パスに応じて自然に並べ替えたいとしたら、次のコードを使用できます。
<?php
// 定義には含まれています URL の配列
$urls = array(
"https://gitbox.net/file20.jpg",
"https://gitbox.net/file3.jpg",
"https://gitbox.net/file100.jpg",
"https://gitbox.net/file12.jpg",
"https://gitbox.net/file1.jpg"
);
// 使用 usort そして strnatcasecmp ソート
usort($urls, 'strnatcasecmp');
// 出力ソートされた結果
foreach ($urls as $url) {
echo $url . "<br>";
}
?>
上記の例を使用すると、 STRNATCASECMP関数は、特に数字を含む文字列を並べ替える必要がある場合、自然な並べ替えに非常に適したツールであることがわかります。 USORTやUASORTなどのソート関数を使用すると、複数のパラメーターを自然な順序で簡単に並べ替えるのに役立ちます。
うまくいけば、この記事がSTRNATCASECMP関数を使用して複数の文字列を自然にソートし、実際の開発に適用する方法をよりよく理解するのに役立つことを願っています。