1
0
mirror of https://github.com/php/doc-ja.git synced 2026-03-26 08:02:15 +01:00
Files
archived-doc-ja/reference/info/functions/version-compare.xml
2021-10-13 00:43:30 +09:00

190 lines
6.7 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 4e6f0774f03131cbeeb8c21019a690bf97fd22b6 Maintainer: hirokawa Status: ready -->
<!-- CREDITS: takagi,mumumu -->
<refentry xml:id="function.version-compare" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>version_compare</refname>
<refpurpose>ふたつの "PHP 標準" バージョン番号文字列を比較する</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type class="union"><type>int</type><type>bool</type></type><methodname>version_compare</methodname>
<methodparam><type>string</type><parameter>version1</parameter></methodparam>
<methodparam><type>string</type><parameter>version2</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>string</type><type>null</type></type><parameter>operator</parameter><initializer>&null;</initializer></methodparam>
</methodsynopsis>
<para>
<function>version_compare</function>は、ふたつの "PHP 標準" バージョン
番号文字列を比較します。
</para>
<para>
この関数はまず、バージョン文字列の
<literal>_</literal>, <literal>-</literal>,
<literal>+</literal> をドット <literal>.</literal> で置き換えます。
さらに、数値でない部分の前後にドット <literal>.</literal> を追加します。
例えば '4.3.2RC1' は '4.3.2.RC.1' となります。
次に、左から右へ
各部分を比較していきます。特殊な文字列が含まれている場合は以下の順で
並べ替えます:
<literal>ここにないすべての文字列</literal> &lt;
<literal>dev</literal> &lt; <literal>alpha</literal> =
<literal>a</literal> &lt; <literal>beta</literal> =
<literal>b</literal> &lt; <literal>RC</literal> =
<literal>rc</literal> &lt; <literal>#</literal> &lt;
<literal>pl</literal> = <literal>p</literal>
この方法により、'4.1' と '4.1.2' のようなバージョンの違いだけではなく
PHP 固有の開発ステータスの違いも判断することが可能となります。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>version1</parameter></term>
<listitem>
<para>
最初のバージョン番号。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>version2</parameter></term>
<listitem>
<para>
ふたつめのバージョン番号。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>operator</parameter></term>
<listitem>
<para>
オプションの演算子。
指定可能な演算子を以下に示します。
<literal>&lt;</literal>, <literal>lt</literal>,
<literal>&lt;=</literal>, <literal>le</literal>, <literal>&gt;</literal>,
<literal>gt</literal>, <literal>&gt;=</literal>, <literal>ge</literal>,
<literal>==</literal>, <literal>=</literal>, <literal>eq</literal>,
<literal>!=</literal>, <literal>&lt;&gt;</literal>, <literal>ne</literal>
</para>
<para>
このパラメータは大文字小文字を区別するので、すべて小文字で指定しなければなりません。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
デフォルトでは、<function>version_compare</function> の戻り値は
最初のバージョンが 2 番目のバージョンより小さい場合に <literal>-1</literal>
同じ場合に <literal>0</literal>、そして 2 番目のバージョンのほうが小さい場合に
<literal>1</literal> となります。
</para>
<para>
オプションの引数 <parameter>operator</parameter> を使用すると、
指定した演算子による関係を満たす場合に &true;、それ以外の場合に
&false; を返すようになります。
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
以下の例では定数 <constant>PHP_VERSION</constant> を使用しています。
この定数には、コードを実行している PHP のバージョンが格納されています。
</para>
<para>
<example>
<title><function>version_compare</function> の例</title>
<programlisting role="php">
<![CDATA[
<?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";
}
?>
]]>
</programlisting>
</example>
</para>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
<note>
<para>
<constant>PHP_VERSION</constant> 定数には現在の
PHP のバージョンが格納されます。
</para>
</note>
<note>
<para>
プレリリース版 (たとえば 5.3.0-dev など)
は、それに対応する正式版 (5.3.0) より小さいとみなされます。
</para>
</note>
<note>
<para>
<literal>alpha</literal>
<literal>beta</literal> のようなバージョン文字列は、大文字小文字を区別します。
したがって、どこかから取得したバージョン文字列を PHP の標準に従わせるなら、
まず <function>strtolower</function> で小文字化してから
<function>version_compare</function> を呼ぶ必要があります。
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>phpversion</function></member>
<member><function>php_uname</function></member>
<member><function>function_exists</function></member>
</simplelist>
</para>
</refsect1>
</refentry>
<!-- Keep this comment at the end of the file
Local variables:
mode: sgml
sgml-omittag:t
sgml-shorttag:t
sgml-minimize-attributes:nil
sgml-always-quote-attributes:t
sgml-indent-step:1
sgml-indent-data:t
indent-tabs-mode:nil
sgml-parent-document:nil
sgml-default-dtd-file:"~/.phpdoc/manual.ced"
sgml-exposed-tags:nil
sgml-local-catalogs:nil
sgml-local-ecat-files:nil
End:
vim600: syn=xml fen fdm=syntax fdl=2 si
vim: et tw=78 syn=sgml
vi: ts=1 sw=1
-->