PHPでは、 strnatcasecmpとnatsortはどちらも自然なソートの概念を伴います。これは通常、文字列のソートに使用されますが、機能的には異なります。この記事では、それらと適用可能なシナリオの違いを詳細に調べます。
自然な並べ替えは、人間の直観に一致するソート方法です。つまり、数字は、キャラクターのASCIIエンコード順序ではなく、価値によってソートされます。たとえば、自然なソートでは、辞書ソートのように、 10が2よりも先になるのではなく、 10が2に遅れます。
strnatcasecmp関数は、2つの文字列を比較し、自然なソートルールを使用し、ケースを無視するために使用されます。 STRCMP関数とは異なり、 STRNATCASECMPは、人間の直観に従って比較してソートするときに文字のケースを無視します。この関数の署名は次のとおりです。
int strnatcasecmp ( string $str1 , string $str2 )
<?php
$str1 = "file10";
$str2 = "file2";
$result = strnatcasecmp($str1, $str2);
if ($result < 0) {
echo "$str1 is less than $str2\n";
} elseif ($result > 0) {
echo "$str1 is greater than $str2\n";
} else {
echo "$str1 is equal to $str2\n";
}
?>
上記のコードでは、自然な並べ替えが10を2を超えるものとして扱うため、 File10はFile2よりも大きいと見なされます。
strnatcasecmpは文字のケースを無視するため、 file10とfile10は同等です。
strnatcasecmpは、2つの文字列を自然に比較する必要がある場合に適しており、文字の場合は考慮されません。たとえば、この関数は、2つのファイル名またはバージョン番号を比較するときに使用できます。
Strnatcasecmpと比較して、 Natsortは、アレイの自然な並べ替えの関数です。 2つの文字列の比較結果を返す代わりに、配列自体を直接変更し、自然な並べ替えのルールに従って配列内の要素をソートします。 Natsortの署名は次のとおりです。
bool natsort ( array &$array )
<?php
$files = ["file20", "file1", "file10", "file2"];
natsort($files);
print_r($files);
?>
この例では、 NatSortは$ファイルアレイを自然に並べ替え、ソートの結果は次のとおりです。
Array
(
[1] => file1
[3] => file2
[2] => file10
[0] => file20
)
File10はFile2の背後にランク付けされ、 File20はFile2の背後にランク付けされ、自然なソートのルールに準拠しています。
NATSORTは、ファイル名、バージョン番号リスト、または数字と文字を含む文字列の配列など、配列を自然にソートする必要があるシナリオに適しています。
返品値:
strnatcasecmpは、2つの文字列を比較し、比較結果を返すために使用されます(0未満、0に等しく、0より大き)。
NatSortは配列をソートするために使用され、ブール値を返して、正常にソートされているかどうかを示します。
該当するオブジェクト:
strnatcasecmpは、2つの文字列を比較する関数です。
Natsortは、配列のソート関数です。
並べ替え:
strnatcasecmpは元の文字列を変更しませんが、2つの文字列を比較します。
NatSortは、配列の順序を直接変更します。
strnatcasecmp関数を使用して、2つの文字列で自然なソート比較を実行し、ケースを無視します。多くの場合、個々の文字列を比較するために使用され、比較が必要なシナリオに適しています。
NATSORT関数を使用して、文字列を含む配列を自然に並べ替えます。ソート結果は返されませんが、配列の順序を直接変更します。ソートする必要がある配列に適しています。
これらの2つの機能には異なるアプリケーションシナリオがあり、開発者は実際のニーズに応じて適切な機能を選択できます。
この記事があなたを助けることを願っています!ご質問がある場合、または詳細な議論が必要な場合は、お気軽にご質問ください。