【PHP8.x】strnatcasecmp関数の使い方

作成日: 更新日:

strnatcasecmp関数は、2つの文字列を自然順序アルゴリズムを使用して、大文字・小文字を区別せずに比較を実行する関数です。この関数は、特に数字を含む文字列の順序付けにおいて、人間が直感的に感じる「自然な順序」を提供することを目的としています。

一般的な文字列比較関数では、文字列中の数字も単なる文字として扱われますが、strnatcasecmp関数は文字列中の数字の並びを数値として認識し、その数値の大小で比較を行います。例えば、「ファイル10」と「ファイル2」を比較する場合、一般的な比較では「ファイル10」が「ファイル2」よりも小さいと判断されることがありますが、この関数では数字の「10」を「2」よりも大きい数値として扱うため、「ファイル2」が「ファイル10」よりも小さいと正しく判断されます。

この関数は2つの引数、すなわち比較対象となる2つの文字列を受け取ります。比較の結果は整数値で返されます。もし2つの文字列が等しい場合は 0 が、最初の文字列が2番目の文字列よりも小さい場合は負の整数が、最初の文字列が2番目の文字列よりも大きい場合は正の整数が返されます。

ファイル名やバージョン番号など、数字を含む文字列をソートする際に非常に便利で、ユーザーにとって分かりやすいリストの表示を実現できます。また、大文字・小文字を区別しないため、「APPLE」と「apple」のような文字列も同じものとして扱われます。

基本的な使い方

構文(syntax)

<?php
$string1 = "file10.txt";
$string2 = "file2.txt";

$comparisonResult = strnatcasecmp($string1, $string2);
?>

引数(parameters)

string $string1, string $string2

  • string $string1: 比較対象となる1つ目の文字列
  • string $string2: 比較対象となる2つ目の文字列

戻り値(return)

int

2つの文字列を大文字・小文字を区別せずに、人間が自然に感じる順序(数値も考慮)で比較した結果を整数で返します。比較結果は、0(等しい)、負の値(第1引数が小さい)、正の値(第1引数が大きい)のいずれかです。

【PHP8.x】strnatcasecmp関数の使い方 | いっしー@Webエンジニア