version_compare

関数の概要

PHPの version_compare 関数は、2つのバージョン番号の文字列を比較するための関数です。特定のソフトウェアのバージョン管理や環境のバージョンチェックなど、バージョンの大小関係を判定したい場面で非常に便利です。この関数は、単なる文字列比較ではなく、バージョン番号の規則に基づいて比較を行います。

パラメータの説明

  • string $version1 – 比較対象の最初のバージョン文字列。
  • string $version2 – 比較対象の2番目のバージョン文字列。
  • string|null $operator(省略可) – 比較演算子を文字列で指定。指定しない場合は、-1, 0, 1 のいずれかを返す。指定する場合は、例えば '=', '<', '>', '<=', '!=', '!==', '==' など。

戻り値

$operatorを指定しない場合は、version1version2 の大小関係によって以下の値を返します。

  • -1:version1version2 よりも古い(小さい)
  • 0:version1version2 が同じ
  • 1:version1version2 よりも新しい(大きい)

$operatorを指定した場合は、比較結果により true または false が返ります。

使用例

基本的な使い方

var_dump(version_compare('1.2.3', '1.2.4'));   // int(-1)
var_dump(version_compare('2.0.0', '1.9.9'));   // int(1)
var_dump(version_compare('1.2.3', '1.2.3'));   // int(0)

上記のように、通常は-1、0、1のいずれかを返し、それぞれ小さい、等しい、大きいを表します。

比較演算子を使った例

if (version_compare(PHP_VERSION, '7.4.0', '>=')) {
    echo "PHP 7.4.0 以上です。";
} else {
    echo "PHP 7.4.0 未満です。";
}

この例では、現在のPHPのバージョンが7.4.0以上かどうかを判定し、そのメッセージを表示しています。

複雑なバージョン比較

echo version_compare('1.0.0beta', '1.0.0', '<');  // true
echo version_compare('1.0.0RC1', '1.0.0', '<');      // true
echo version_compare('2.1.0-dev', '2.1.0', '<');     // true

このように、プレリリース版や開発版のバージョンも適切に比較できます。’beta’, ‘RC’, ‘dev’ などの文字列も考慮されます。

関連する関数

  • phpversion() – 現在のPHPのバージョンを取得する関数。
  • defined() – 定数の定義有無を調べる関数(バージョン別処理で使うことが多い)。
  • version_compare() – 今回解説した関数と同じ。

まとめ

version_compare 関数は、PHPでバージョンを正しく比較したい場合に最適な関数です。単純な文字列比較では誤った判定をすることもありますが、この関数を使えば複雑なバージョン表記も適切に評価できます。特に環境設定やバージョン依存の処理を書く際に非常に役立つため、ぜひ覚えて活用してみてください。