-
Notifications
You must be signed in to change notification settings - Fork 105
/
Copy pathrange.xml
executable file
·269 lines (258 loc) · 9.11 KB
/
range.xml
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
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<!-- EN-Revision: 647d5c50e3b6c103a3efdb578fd227f8b923399d Maintainer: daijie Status: ready -->
<!-- CREDITS: mowangjuanzi, Luffy -->
<refentry xml:id="function.range" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>range</refname>
<refpurpose>根据范围创建数组,包含指定的元素</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>range</methodname>
<methodparam><type class="union"><type>string</type><type>int</type><type>float</type></type><parameter>start</parameter></methodparam>
<methodparam><type class="union"><type>string</type><type>int</type><type>float</type></type><parameter>end</parameter></methodparam>
<methodparam choice="opt"><type class="union"><type>int</type><type>float</type></type><parameter>step</parameter><initializer>1</initializer></methodparam>
</methodsynopsis>
<para>
建立一个包含指定范围单元的数组。
</para>
<para>
如果 <parameter>start</parameter> 和 <parameter>end</parameter> 都是 <type>string</type>,<parameter>step</parameter>
是 <type>int</type>,则生成的数组是字节序列,否则,生成的数组将是数字序列。
</para>
<para>
如果 <parameter>start</parameter> 小于或等于 <parameter>end</parameter>,则为递增序列,否则为递减序列。
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>start</parameter></term>
<listitem>
<para>
序列的第一个值。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>end</parameter></term>
<listitem>
<para>
序列的最后一个可能值。
</para>
</listitem>
</varlistentry>
<varlistentry>
<term><parameter>step</parameter></term>
<listitem>
<para>
<parameter>step</parameter> 表示在序列之间产生序列时前进的数量。
</para>
<para>
对于递减序列,<parameter>step</parameter> 可能是负数。
</para>
<para>
如果 <parameter>step</parameter> 是没有小数部分的 <type>float</type>,则将解释为 <type>int</type>。
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
返回 <type>array</type>,由元素组成的序列,其中第一个元素为 <parameter>start</parameter>,最后一个元素为
<parameter>end</parameter>,序列中每个元素之间的差值为 <parameter>step</parameter>。
</para>
<para>
返回的数组的最后一个元素是 <parameter>end</parameter> 或序列中的前一个元素,具体取决于 <parameter>step</parameter>。
</para>
<para>
如果 <parameter>start</parameter> 和 <parameter>end</parameter> 都是 <type>string</type>,并且
<parameter>step</parameter> 是 <type>int</type>,则生成的数组将是字节序列,通常是拉丁 <abbrev>ASCII</abbrev> 字符。
</para>
<para>
如果 <parameter>start</parameter>、<parameter>end</parameter> 或 <parameter>step</parameter> 是
<type>float</type>,则生成的数组将是 <type>float</type> 序列。
</para>
<para>
否则,生成的数组将是 <type>int</type> 序列。
</para>
</refsect1>
<refsect1 role="errors">
&reftitle.errors;
<itemizedlist>
<listitem>
<simpara>
如果 <parameter>step</parameter> 是 <literal>0</literal>,则抛出 <classname>ValueError</classname>。
</simpara>
</listitem>
<listitem>
<simpara>
如果 <parameter>start</parameter>、<parameter>end</parameter> 或 <parameter>step</parameter> 不是
<function>is_finite</function>,则抛出 <classname>ValueError</classname>。
</simpara>
</listitem>
<listitem>
<simpara>
如果 <parameter>step</parameter> 是负数,但生成的范围是递增的(例如 <code>$start <=
$end</code>),则抛出 <classname>ValueError</classname>。
</simpara>
</listitem>
<listitem>
<simpara>
如果 <parameter>start</parameter> 或 <parameter>end</parameter> 是空字符串 <literal>''</literal>,则发出
<constant>E_WARNING</constant> 并将空字符串解释为 <literal>0</literal>。
</simpara>
</listitem>
<listitem>
<simpara>
如果 <parameter>start</parameter> 或 <parameter>end</parameter> 不是一个<link
linkend="language.types.numeric-strings">数字字符串</link>,并且多于一个字节,将发出 <constant>E_WARNING</constant>。
</simpara>
</listitem>
<listitem>
<simpara>
如果 <parameter>start</parameter> 或 <parameter>end</parameter> 是字符串,并且由于另一个边界值是数字而默默转换为
<type>int</type>,将发出 <constant>E_WARNING</constant>。
</simpara>
</listitem>
<listitem>
<simpara>
如果 <parameter>step</parameter> 是 <type>float</type>,并且 <parameter>start</parameter> 和 <parameter>end</parameter>
不是<link linkend="language.types.numeric-strings">数字字符串</link>,将发出 <constant>E_WARNING</constant>。
</simpara>
</listitem>
</itemizedlist>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>start</parameter> 和 <parameter>end</parameter> 都是字符串,然后 <function>range</function>
现在将始终生成字节 <type>array</type>。之前如果其中一个边界值是数字字符串,然后另外一个边界值也会默默转换为 <type>int</type>。
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>start</parameter> 或 <parameter>end</parameter> 是字符串,并且由于另一个边界值是数字而默默转换为
<type>int</type>,现在将发出 <constant>E_WARNING</constant>。
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>start</parameter> 或 <parameter>end</parameter> 是多于一个字节的非数字字符串,现在将发出 <constant>E_WARNING</constant>。
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>start</parameter> 或 <parameter>end</parameter> 是空字符串,现在将发出 <constant>E_WARNING</constant>。
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>step</parameter> 是不带小数部分的 <type>float</type>,将解释为 <type>int</type>。
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>step</parameter> 是负数,当生成的范围是递增时,现在将抛出 <classname>ValueError</classname>。
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>step</parameter> 不是有限数值(finite),现在将抛出 <classname>ValueError</classname>。
</entry>
</row>
<row>
<entry>8.3.0</entry>
<entry>
如果 <parameter>start</parameter> 或 <parameter>end</parameter> 是 <type>array</type>、<type>object</type> 或
<type>resource</type>,现在将会抛出 <classname>TypeError</classname>。之前会默默地转换为 <type>int</type>。
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title><function>range</function> 示例</title>
<programlisting role="php">
<![CDATA[
<?php
echo implode(', ', range(0, 12)), PHP_EOL;
echo implode(', ', range(0, 100, 10)), PHP_EOL;
echo implode(', ', range('a', 'i')), PHP_EOL;
echo implode(', ', range('c', 'a')), PHP_EOL;
echo implode(', ', range('A', 'z')), PHP_EOL;
?>
]]>
</programlisting>
&example.outputs;
<screen>
<![CDATA[
0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12
0, 10, 20, 30, 40, 50, 60, 70, 80, 90, 100
a, b, c, d, e, f, g, h, i
c, b, a
A, B, C, D, E, F, G, H, I, J, K, L, M, N, O, P, Q, R, S, T, U, V, W, X, Y, Z, [, \, ], ^, _, `, a, b, c, d, e, f, g, h, i, j, k, l, m, n, o, p, q, r, s, t, u, v, w, x, y, z
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>shuffle</function></member>
<member><function>array_fill</function></member>
<member>&foreach;</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
-->