version_compare

(PHP 4 >= 4.1.0, PHP 5, PHP 7, PHP 8)

version_compareふたつの "PHP 標準" バージョン番号文字列を比較する

説明

version_compare(string $version1, string $version2, ?string $operator = null): int|bool

version_compare()は、ふたつの "PHP 標準" バージョン 番号文字列を比較します。

この関数はまず、バージョン文字列の _, -, + をドット . で置き換えます。 さらに、数値でない部分の前後にドット . を追加します。 例えば '4.3.2RC1' は '4.3.2.RC.1' となります。 次に、左から右へ 各部分を比較していきます。特殊な文字列が含まれている場合は以下の順で 並べ替えます: ここにないすべての文字列 < dev < alpha = a < beta = b < RC = rc < # < pl = p この方法により、'4.1' と '4.1.2' のようなバージョンの違いだけではなく PHP 固有の開発ステータスの違いも判断することが可能となります。

パラメータ

version1

最初のバージョン番号。

version2

ふたつめのバージョン番号。

operator

オプションの演算子。 指定可能な演算子を以下に示します。 <, lt, <=, le, >, gt, >=, ge, ==, =, eq, !=, <>, ne

このパラメータは大文字小文字を区別するので、すべて小文字で指定しなければなりません。

戻り値

デフォルトでは、version_compare() の戻り値は 最初のバージョンが 2 番目のバージョンより小さい場合に -1、 同じ場合に 0、そして 2 番目のバージョンのほうが小さい場合に 1 となります。

オプションの引数 operator を使用すると、 指定した演算子による関係を満たす場合に true、それ以外の場合に false を返すようになります。

以下の例では定数 PHP_VERSION を使用しています。 この定数には、コードを実行している PHP のバージョンが格納されています。

例1 version_compare() の例

<?php
if (version_compare(PHP_VERSION'7.0.0') >= 0) {
    echo 
'7.0.0 より新しいバージョンの PHP を使っています。バージョンは ' PHP_VERSION " です。\n";
}

if (
version_compare(PHP_VERSION'5.3.0') >= 0) {
    echo 
'5.3.0 より新しいバージョンの PHP を使っています。バージョンは ' PHP_VERSION " です。\n";
}

if (
version_compare(PHP_VERSION'5.0.0''>=')) {
    echo 
'5.0.0 より新しいバージョンの PHP を使っています。バージョンは ' PHP_VERSION " です。\n";
}

if (
version_compare(PHP_VERSION'5.0.0''<')) {
    echo 
'まだ PHP 4 です。バージョンは ' PHP_VERSION " です。\n";
}
?>

注意

注意:

PHP_VERSION 定数には現在の PHP のバージョンが格納されます。

注意:

プレリリース版 (たとえば 5.3.0-dev など) は、それに対応する正式版 (5.3.0) より小さいとみなされます。

注意:

alphabeta のようなバージョン文字列は、大文字小文字を区別します。 したがって、どこかから取得したバージョン文字列を PHP の標準に従わせるなら、 まず strtolower() で小文字化してから version_compare() を呼ぶ必要があります。

参考

  • phpversion() - 現在の PHP バージョンを取得する
  • php_uname() - PHP が稼動しているオペレーティングシステムに関する情報を返す
  • function_exists() - 指定した関数が定義されている場合に true を返す

関連キーワード:  バージョン, 番号, ふたつ, 比較, 標準, version, compare, 小文字, 注意, operator