-
Notifications
You must be signed in to change notification settings - Fork 14
Expand file tree
/
Copy pathlist.xml
More file actions
316 lines (299 loc) · 7.37 KB
/
list.xml
File metadata and controls
316 lines (299 loc) · 7.37 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
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
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
<?xml version="1.0" encoding="UTF-8"?>
<!-- EN-Revision: n/a Maintainer: cucinato Status: ready -->
<refentry xml:id="function.list" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>list</refname>
<refpurpose>Assegna valori a delle variabili come se fossero un array</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>array</type><methodname>list</methodname>
<methodparam><type>mixed</type><parameter>var1</parameter></methodparam>
<methodparam rep="repeat" choice="opt"><type>mixed</type><parameter>...</parameter></methodparam>
</methodsynopsis>
<para>
Come <function>array</function>, questa non è in realtà una funzione,
bensì un costrutto del linguaggio. <function>list</function> è usata per
assegnare valori ad una lista di variabili in una sola operazione.
</para>
<note>
<para>
<function>list</function> funziona solo su array numerici e si aspetta
che gli indici numerici partano da 0.
</para>
</note>
<warning>
<para>
In PHP 5, <function>list</function> assegna i valori partendo dal
parametro più a destra. In PHP 7, <function>list</function> comincia dal
parametro più a sinistra.
</para>
<para>
Se si stanno usando variabili semplici, non ci si deve preoccupare di questo comportamento. Ma
se si stanno usando array con indici ci si aspetta che l'ordine degli
indici nell'array sia lo stesso scritto nella funzione <function>list</function>
da sinitra a destra; non è il caso in PHP 5, dal momento che sono assegnati
in ordine inverso.
</para>
<para>
In generale, è sconsigliato fare affidamento su uno specifico ordine
di operazioni, dal momento che questo può cambiare in futuro.
</para>
</warning>
<warning>
<para>
La modifica dell'array durante l'esecuzione di <function>list</function> (es.
usando <literal>list($a, $b) = $b</literal> ha un comportamento indefinito.
</para>
</warning>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>var1</parameter></term>
<listitem>
<para>
Una variabile.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Restituisce l'array assegnato.
</para>
</refsect1>
<refsect1 role="changelog">
&reftitle.changelog;
<para>
<informaltable>
<tgroup cols="2">
<thead>
<row>
<entry>&Version;</entry>
<entry>&Description;</entry>
</row>
</thead>
<tbody>
<row>
<entry>7.0.0</entry>
<entry>
<link linkend="migration70.incompatible.variable-handling.list.order">
L'ordine di esecuzione delle operazioni di assegnazione è
cambiato.
</link>
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
<link linkend="migration70.incompatible.variable-handling.list.empty">
Le espressioni <function>list</function> non possono più essere completamente
vuote.
</link>
</entry>
</row>
<row>
<entry>7.0.0</entry>
<entry>
<link linkend="migration70.incompatible.variable-handling.list.string">
Le stringhe non possono più essere spacchettate.
</link>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>esempio di <function>list</function></title>
<programlisting role="php">
<![CDATA[
<?php
$info = array('caffè', 'scuro', 'caffeina');
// assegna a tutte le variabili
list($bevanda, $colore, $componente) = $info;
echo "Il $bevanda è $colore e la $componente lo rende speciale.\n";
// assegna solo in parte
list($bevanda, , $componente) = $info;
echo "Il $bevanda ha la $componente.\n";
// oppure assegnamo solo l'ultima variabile
list( , , $componente) = $info;
echo"Ho voglia di $componente!\n";
// list() non funziona con le stringhe
list($bar) = "abcde";
var_dump($bar); // NULL
?>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Esempio di uso di <function>list</function></title>
<programlisting role="php">
<![CDATA[
<table>
<tr>
<th>Nome dell'impiegato</th>
<th>Stipendio</th>
</tr>
<?php
$risultato = $pdo_query("SELECT id, nome, stipendio FROM impiegati");
while (list($id, $nome, $stipendio) = $result->fetch(PDO::FETCH_NUM)) {
echo (" <tr>\n".
" <td><a href=\"info.php?id=$id\">$nome</a></td>\n".
" <td>$stipendio</td>\n".
" </tr>\n");
}
?>
</table>
]]>
</programlisting>
</example>
</para>
<para>
<example>
<title>Utilizzare <function>list</function> annidate</title>
<programlisting role="php">
<![CDATA[
<?php
list($a, list($b, $c)) = array(1, array(2, 3));
var_dump($a, $b, $c);
?>
]]>
</programlisting>
<screen>
<![CDATA[
int(1)
int(2)
int(3)
]]>
</screen>
</example>
</para>
<para>
<example>
<title>Utilizzo di <function>list</function> con gli indici</title>
<programlisting role="php">
<![CDATA[
<?php
$info = array('caffè', 'nero', 'caffeina');
list($a[0], $a[1], $a[2]) = $info;
var_dump($a);
?>
]]>
</programlisting>
<para>
Restituisce il seguente risultato (si noti l'ordine degli elementi rispetto
all'ordine con cui sono stati scritti nella sintassi di <function>list</function>).
</para>
&example.outputs.7;
<screen>
<![CDATA[
array(3) {
[2]=>
string(8) "caffeina"
[1]=>
string(4) "nero"
[0]=>
string(5) "caffè"
}
]]>
</screen>
&example.outputs.5;
<screen>
<![CDATA[
array(3) {
[2]=>
string(8) "caffeine"
[1]=>
string(5) "brown"
[0]=>
string(6) "coffee"
}
]]>
</screen>
</example>
</para>
<para>
<example>
<title><function>list</function> e ordine delle definizioni dell'indice</title>
<simpara>
L'ordine con il quale sono definiti gli indici dell'array da consumare da parte di
<function>list</function> è irrilevante.
</simpara>
<programlisting role="php">
<![CDATA[
<?php
$foo = array(2 => 'a', 'foo' => 'b', 0 => 'c');
$foo[1] = 'd';
list($x, $y, $z) = $foo;
var_dump($foo, $x, $y, $z);
]]>
</programlisting>
<para>
Restituisce il seguente risultato (si noti l'ordine degli elementi in rapporto a
quello con cui sono scritti nella sintassi di <function>list</function>):
</para>
<screen>
<![CDATA[
array(4) {
[2]=>
string(1) "a"
["foo"]=>
string(1) "b"
[0]=>
string(1) "c"
[1]=>
string(1) "d"
}
string(1) "c"
string(1) "d"
string(1) "a"
]]>
</screen>
</example>
</para>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>each</function></member>
<member><function>array</function></member>
<member><function>extract</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
-->