【PHP8.x】strnatcmp関数の使い方
作成日: 更新日:
strnatcmp関数は、人間が直感的に理解しやすい「自然順」アルゴリズムを使用して、2つの文字列を比較する関数です。この関数は、通常の文字列比較(たとえば strcmp
関数)が文字コード順(辞書順)で比較するのに対し、数字の並びを数値として認識して比較します。
具体的には、「file1.txt」、「file10.txt」、「file2.txt」のような文字列を比較する際、通常の比較では「file1.txt」の次に「file10.txt」、その後に「file2.txt」が来ます。しかし、strnatcmp関数を使うと、数字部分を数値として扱うため、「file1.txt」、「file2.txt」、「file10.txt」という、人間が期待する自然な順序で比較結果が得られます。
この関数は、比較したい2つの文字列を引数として受け取ります。戻り値は整数で、最初の文字列が2番目の文字列よりも小さい場合は負の値を、両者が等しい場合は0を、最初の文字列が大きい場合は正の値を返します。ファイル名やバージョン番号など、数字を含む文字列を正しくソートしたり比較したりする際に非常に有用です。この関数は、大文字と小文字を区別して比較します。大文字と小文字を区別しない自然順比較を行いたい場合は、strnatcasecmp
関数を使用します。
基本的な使い方
構文(syntax)
<?php
// strnatcmp は、人間が読むような自然な順番で文字列を比較します。
// 通常の文字列比較と異なり、数字の並びを数値として扱います。
// 結果は、最初の文字列が2番目の文字列より小さい場合は負の数、等しい場合は0、大きい場合は正の数を返します。
$string_a = "img10.png";
$string_b = "img2.png";
// 自然順比較では "img10" は "img2" より大きいと判断されます。
$result = strnatcmp($string_a, $string_b);
echo $result; // 出力例: 1 (正の値)
?>
引数(parameters)
string $string1, string $string2
- string $string1: 比較対象の1つ目の文字列
- string $string2: 比較対象の2つ目の文字列
戻り値(return)
int
文字列を、人間が理解する自然な順序で比較し、その結果を整数で返します。比較結果は、文字列が等しい場合は 0、最初の文字列が 2 番目の文字列より小さい場合は -1、大きい場合は 1 となります。