関数の概要
PHPの version_compare 関数は、2つのバージョン番号の文字列を比較するための関数です。特定のソフトウェアのバージョン管理や環境のバージョンチェックなど、バージョンの大小関係を判定したい場面で非常に便利です。この関数は、単なる文字列比較ではなく、バージョン番号の規則に基づいて比較を行います。
パラメータの説明
string $version1– 比較対象の最初のバージョン文字列。string $version2– 比較対象の2番目のバージョン文字列。string|null $operator(省略可) – 比較演算子を文字列で指定。指定しない場合は、-1, 0, 1 のいずれかを返す。指定する場合は、例えば'=','<','>','<=','!=','!==','=='など。
戻り値
$operatorを指定しない場合は、version1 と version2 の大小関係によって以下の値を返します。
- -1:
version1がversion2よりも古い(小さい) - 0:
version1とversion2が同じ - 1:
version1がversion2よりも新しい(大きい)
$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でバージョンを正しく比較したい場合に最適な関数です。単純な文字列比較では誤った判定をすることもありますが、この関数を使えば複雑なバージョン表記も適切に評価できます。特に環境設定やバージョン依存の処理を書く際に非常に役立つため、ぜひ覚えて活用してみてください。
