-
Notifications
You must be signed in to change notification settings - Fork 109
Expand file tree
/
Copy pathversion-compare.xml
More file actions
170 lines (158 loc) · 5.86 KB
/
version-compare.xml
File metadata and controls
170 lines (158 loc) · 5.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 4e6f0774f03131cbeeb8c21019a690bf97fd22b6 Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi -->
<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> <
<literal>dev</literal> < <literal>alpha</literal> =
<literal>a</literal> < <literal>beta</literal> =
<literal>b</literal> < <literal>RC</literal> =
<literal>rc</literal> < <literal>#</literal> <
<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><</literal>、<literal>lt</literal>、<literal><=</literal>、<literal>le</literal>、
<literal>></literal>、<literal>gt</literal>、<literal>>=</literal>、<literal>ge</literal>、<literal>==</literal>、
<literal>=</literal>、<literal>eq</literal>、<literal>!=</literal>、<literal><></literal>、<literal>ne</literal>。
</para>
<para>
此参数区分大小写,它的值应该是小写的。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
默认情况下,在第一个版本低于第二个时,<function>version_compare</function> 返回 <literal>-1</literal>;如果两者相等,返回 <literal>0</literal>;第二个版本更低时则返回 <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> examples</title>
<programlisting role="php">
<![CDATA[
<?php
if (version_compare(PHP_VERSION, '7.0.0') >= 0) {
echo 'I am at least PHP version 7.0.0, my version: ' . PHP_VERSION . "\n";
}
if (version_compare(PHP_VERSION, '5.3.0') >= 0) {
echo 'I am at least PHP version 5.3.0, my version: ' . PHP_VERSION . "\n";
}
if (version_compare(PHP_VERSION, '5.0.0', '>=')) {
echo 'I am at least PHP version 5.0.0, my version: ' . PHP_VERSION . "\n";
}
if (version_compare(PHP_VERSION, '5.0.0', '<')) {
echo 'I am still PHP 4, my version: ' . 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>version_compare</function> 之前先用 <function>strtolower</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
-->