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

作成日: 更新日:

version_compare関数は、2つのバージョン文字列を比較し、その結果を示す数値を返したり、特定の比較演算子に基づいて真偽値を返したりする関数です。この関数は、ソフトウェアのバージョンが特定の条件を満たすかどうかをプログラムで判断したい場合に非常に有効です。

この関数には、比較したい最初のバージョン文字列を渡す$version1引数と、比較したい2番目のバージョン文字列を渡す$version2引数があります。さらに、オプションとして$operator引数を指定することもできます。

$operator引数を省略した場合、関数は整数を返します。具体的には、$version1$version2よりも小さい場合は-1、両者が等しい場合は0$version1$version2よりも大きい場合は1が返されます。これにより、比較結果に応じて柔軟な処理を行うことが可能です。

一方、$operator引数に'<', 'lt', '>', 'gt', '==', 'eq', '!=', 'ne'などの比較演算子文字列を指定した場合、version_compare関数はその比較結果が真であればtrue、偽であればfalseという真偽値を返します。これにより、コード内で直接条件分岐(if文など)に組み込むことができ、より簡潔な記述が可能です。

この関数の特徴は、単なる数値や文字列の比較にとどまらず、「1.0.11」と「1.0.9」のようなドット区切りのバージョン番号だけでなく、「1.0.0-RC1」や「1.0.0beta」といったプレリリース版の表記も適切に解釈して比較できる点です。例えば、特定のPHPの機能があるバージョン以降でしか利用できない場合に、現在のPHPのバージョンをチェックし、互換性を確保するための処理を実装する際に役立ちます。システム開発において、動作環境のバージョン管理や機能の互換性チェックは重要な要素であり、この関数の適切な利用は安定したシステム構築に貢献します。

基本的な使い方

構文(syntax)

<?php
$compare_result = version_compare('1.0.0', '1.0.1');
$is_version_met = version_compare(PHP_VERSION, '8.0.0', '>=');
?>

引数(parameters)

string $version1, string $version2, ?string $operator = null

  • string $version1: 比較対象のバージョン1を指定する文字列
  • string $version2: 比較対象のバージョン2を指定する文字列
  • ?string $operator = null: 比較演算子を指定する文字列。省略可能で、省略時はバージョン1がバージョン2より大きいか、等しいか、小さいかを比較する

戻り値(return)

int|bool

指定されたPHPのversion_compare関数は、2つのバージョン文字列を比較した結果を返します。バージョン1がバージョン2より大きい場合は1、等しい場合は0、小さい場合は-1の整数を返します。ただし、バージョン文字列のフォーマットが無効な場合はfalseを返します。

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