uTools-Manuals/docs/php/list.html
2019-04-08 23:22:26 +08:00

297 lines
21 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="content-type" content="text/html; charset=UTF-8">
<title>把数组中的值赋给一组变量</title>
</head>
<body class="docs"><div id="layout">
<div id="layout-content"><div id="function.list" class="refentry">
<div class="refnamediv">
<h1 class="refname">list</h1>
<p class="verinfo">(PHP 4, PHP 5, PHP 7)</p><p class="refpurpose"><span class="refname">list</span> &mdash; <span class="dc-title">把数组中的值赋给一组变量 </span></p>
</div>
<div class="refsect1 description" id="refsect1-function.list-description">
<h3 class="title">说明</h3>
<div class="methodsynopsis dc-description">
<span class="methodname"><strong>list</strong></span>
( <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <code class="parameter">$var1</code></span>
[, <span class="methodparam"><span class="type"><a href="language.pseudo-types.html#language.types.mixed" class="type mixed">mixed</a></span> <code class="parameter">$...</code></span>
] ) : <span class="type">array</span></div>
<p class="para rdfs-comment">
<span class="function"><a href="array.html" class="function">array()</a></span> 一样,这不是真正的函数,而是语言结构。
<span class="function"><strong>list()</strong></span>
可以在单次操作内就为一组变量赋值。
</p>
<blockquote class="note"><p><strong class="note">Note</strong>:
<p class="para">
在 PHP 7.1.0 之前的版本,<span class="function"><strong>list()</strong></span> 仅能用于数字索引的数组,并假定数字索引从 0 开始。
</p>
</p></blockquote>
<div class="warning"><strong class="warning">Warning</strong>
<p class="para">
PHP 5 里,<span class="function"><strong>list()</strong></span> 从最右边的参数开始赋值;
PHP 7 里,<span class="function"><strong>list()</strong></span> 从最左边的参数开始赋值。
</p>
<p class="para">
如果你用单纯的变量,不用担心这一点。
但是如果你用了具有索引的数组,通常你期望得到的结果和在
<span class="function"><strong>list()</strong></span> 中写的一样是从左到右的,但在 PHP 5 里实际上不是,
它是以相反顺序赋值的。
</p>
<p class="para">
通常而言,不建议依赖于操作的顺序,在未来可能会再次发生修改。
</p>
</div>
<div class="warning"><strong class="warning">Warning</strong>
<p class="para">
<span class="function"><strong>list()</strong></span> 执行过程中修改数组(比如使用 <em>list($a, $b) = $b</em>)将会产生不可预知的结果。
</p>
</div>
</div>
<div class="refsect1 parameters" id="refsect1-function.list-parameters">
<h3 class="title">参数</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">var1</code></dt>
<dd>
<p class="para">
一个变量。
</p>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.list-returnvalues">
<h3 class="title">返回值</h3>
<p class="para">
返回指定的数组。
</p>
</div>
<div class="refsect1 changelog" id="refsect1-function.list-changelog">
<h3 class="title">更新日志</h3>
<p class="para">
<table class="doctable informaltable">
<thead>
<tr>
<th>版本</th>
<th>说明</th>
</tr>
</thead>
<tbody class="tbody">
<tr>
<td>7.1.0</td>
<td>
现在可以指定 <span class="function"><strong>list()</strong></span> 中的键。
这就可以解构非数字键或者无顺序的数组。
</td>
</tr>
<tr>
<td>7.0.0</td>
<td>
<a href="migration70.incompatible.html#migration70.incompatible.variable-handling.list.order" class="link">
赋值操作的顺序发生了变化。
</a>
</td>
</tr>
<tr>
<td>7.0.0</td>
<td>
<a href="migration70.incompatible.html#migration70.incompatible.variable-handling.list.empty" class="link">
<span class="function"><strong>list()</strong></span> 表达式不再可以完全为空。
</a>
</td>
</tr>
<tr>
<td>7.0.0</td>
<td>
<a href="migration70.incompatible.html#migration70.incompatible.variable-handling.list.string" class="link">
字符串无法再被拆包unpack
</a>
</td>
</tr>
</tbody>
</table>
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.list-examples">
<h3 class="title">范例</h3>
<p class="para">
<div class="example" id="example-6103">
<p><strong>Example #1 <span class="function"><strong>list()</strong></span> 例子</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br />$info&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'coffee'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'brown'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'caffeine'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">//&nbsp;列出所有变量<br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$drink</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$color</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$power</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #0000BB">$info</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$drink</span><span style="color: #DD0000">&nbsp;is&nbsp;</span><span style="color: #0000BB">$color</span><span style="color: #DD0000">&nbsp;and&nbsp;</span><span style="color: #0000BB">$power</span><span style="color: #DD0000">&nbsp;makes&nbsp;it&nbsp;special.\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;列出他们的其中一个<br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$drink</span><span style="color: #007700">,&nbsp;,&nbsp;</span><span style="color: #0000BB">$power</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #0000BB">$info</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$drink</span><span style="color: #DD0000">&nbsp;has&nbsp;</span><span style="color: #0000BB">$power</span><span style="color: #DD0000">.\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;或者让我们跳到仅第三个<br /></span><span style="color: #007700">list(&nbsp;,&nbsp;,&nbsp;</span><span style="color: #0000BB">$power</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #0000BB">$info</span><span style="color: #007700">;<br />echo&nbsp;</span><span style="color: #DD0000">"I&nbsp;need&nbsp;</span><span style="color: #0000BB">$power</span><span style="color: #DD0000">!\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;list()&nbsp;不能对字符串起作用<br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$bar</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #DD0000">"abcde"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$bar</span><span style="color: #007700">);&nbsp;</span><span style="color: #FF8000">//&nbsp;NULL<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
<p class="para">
<div class="example" id="example-6104">
<p><strong>Example #2 <span class="function"><strong>list()</strong></span> 用法的一个例子</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
&lt;table&gt;<br />&nbsp;&lt;tr&gt;<br />&nbsp;&nbsp;&lt;th&gt;Employee&nbsp;name&lt;/th&gt;<br />&nbsp;&nbsp;&lt;th&gt;Salary&lt;/th&gt;<br />&nbsp;&lt;/tr&gt;<br /><br /><span style="color: #0000BB">&lt;?php<br /><br />$result&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">$pdo</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT&nbsp;id,&nbsp;name,&nbsp;salary&nbsp;FROM&nbsp;employees"</span><span style="color: #007700">);<br />while&nbsp;(list(</span><span style="color: #0000BB">$id</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$name</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$salary</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #0000BB">$result</span><span style="color: #007700">-&gt;</span><span style="color: #0000BB">fetch</span><span style="color: #007700">(</span><span style="color: #0000BB">PDO</span><span style="color: #007700">::</span><span style="color: #0000BB">FETCH_NUM</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"&nbsp;&lt;tr&gt;\n"&nbsp;</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"&nbsp;&nbsp;&lt;td&gt;&lt;a&nbsp;href=\"info.php?id=</span><span style="color: #0000BB">$id</span><span style="color: #DD0000">\"&gt;</span><span style="color: #0000BB">$name</span><span style="color: #DD0000">&lt;/a&gt;&lt;/td&gt;\n"&nbsp;</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"&nbsp;&nbsp;&lt;td&gt;</span><span style="color: #0000BB">$salary</span><span style="color: #DD0000">&lt;/td&gt;\n"&nbsp;</span><span style="color: #007700">.<br />&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #DD0000">"&nbsp;&lt;/tr&gt;\n"</span><span style="color: #007700">;<br />}<br /><br /><br /></span><span style="color: #0000BB">?&gt;<br /></span><br />&lt;/table&gt;</span>
</pre></div>
</div>
</div>
</p>
<p class="para">
<div class="example" id="example-6105">
<p><strong>Example #3 使用嵌套的 <span class="function"><strong>list()</strong></span></strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$a</span><span style="color: #007700">,&nbsp;list(</span><span style="color: #0000BB">$b</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$c</span><span style="color: #007700">))&nbsp;=&nbsp;array(</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;array(</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$b</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$c</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
<div class="example-contents screen">
<div class="cdata"><pre>
int(1)
int(2)
int(3)
</pre></div>
</div>
</div>
</p>
<p class="para">
<div class="example" id="example-6106">
<p><strong>Example #4 在 <span class="function"><strong>list()</strong></span> 中使用数组索引</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br />$info&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #DD0000">'coffee'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'brown'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'caffeine'</span><span style="color: #007700">);<br /><br />list(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">],&nbsp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">])&nbsp;=&nbsp;</span><span style="color: #0000BB">$info</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
<div class="example-contents"><p>
产生如下输出(注意单元顺序和 <span class="function"><strong>list()</strong></span> 语法中所写的顺序的比较):
</p></div>
<div class="example-contents"><p>Output of the above example in PHP 7:</p></div>
<div class="example-contents screen">
<div class="cdata"><pre>
array(3) {
[0]=&gt;
string(6) &quot;coffee&quot;
[1]=&gt;
string(5) &quot;brown&quot;
[2]=&gt;
string(8) &quot;caffeine&quot;
}
</pre></div>
</div>
<div class="example-contents"><p>Output of the above example in PHP 5:</p></div>
<div class="example-contents screen">
<div class="cdata"><pre>
array(3) {
[2]=&gt;
string(8) &quot;caffeine&quot;
[1]=&gt;
string(5) &quot;brown&quot;
[0]=&gt;
string(6) &quot;coffee&quot;
}
</pre></div>
</div>
</div>
</p>
<p class="para">
<div class="example" id="example-6107">
<p><strong>Example #5 <span class="function"><strong>list()</strong></span> 和索引顺序定义</strong></p>
<div class="example-contents"><p>
<span class="function"><strong>list()</strong></span> 使用 array 索引的顺序和它何时定义无关。
</p></div>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$foo&nbsp;</span><span style="color: #007700">=&nbsp;array(</span><span style="color: #0000BB">2&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'a'</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'foo'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'b'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">0&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'c'</span><span style="color: #007700">);<br /></span><span style="color: #0000BB">$foo</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">]&nbsp;=&nbsp;</span><span style="color: #DD0000">'d'</span><span style="color: #007700">;<br />list(</span><span style="color: #0000BB">$x</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$y</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$z</span><span style="color: #007700">)&nbsp;=&nbsp;</span><span style="color: #0000BB">$foo</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">$foo</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$x</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$y</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$z</span><span style="color: #007700">);</span>
</span>
</pre></div>
</div>
<div class="example-contents"><p>
得到以下输出(注意比较 <span class="function"><strong>list()</strong></span> 所写的元素顺序):
</p></div>
<div class="example-contents screen">
<div class="cdata"><pre>
array(4) {
[2]=&gt;
string(1) &quot;a&quot;
[&quot;foo&quot;]=&gt;
string(1) &quot;b&quot;
[0]=&gt;
string(1) &quot;c&quot;
[1]=&gt;
string(1) &quot;d&quot;
}
string(1) &quot;c&quot;
string(1) &quot;d&quot;
string(1) &quot;a&quot;
</pre></div>
</div>
</div>
</p>
<p class="para">
<div class="example" id="example-6108">
<p><strong>Example #6 带键的 <span class="function"><strong>list()</strong></span></strong></p>
<div class="example-contents"><p>
从 PHP 7.1.0 开始,<span class="function"><strong>list()</strong></span> 可以包含显式的键,可赋值到任意表达式。
可以混合使用数字和字符串键。但是不能混合有键和无键不能混用。
</p></div>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$data&nbsp;</span><span style="color: #007700">=&nbsp;[<br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #DD0000">"id"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Tom'</span><span style="color: #007700">],<br />&nbsp;&nbsp;&nbsp;&nbsp;[</span><span style="color: #DD0000">"id"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'Fred'</span><span style="color: #007700">],<br />];<br />foreach&nbsp;(</span><span style="color: #0000BB">$data&nbsp;</span><span style="color: #007700">as&nbsp;[</span><span style="color: #DD0000">"id"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$id</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">"name"&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$name</span><span style="color: #007700">])&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"id:&nbsp;</span><span style="color: #0000BB">$id</span><span style="color: #DD0000">,&nbsp;name:&nbsp;</span><span style="color: #0000BB">$name</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br />echo&nbsp;</span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />list(</span><span style="color: #0000BB">1&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$second</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">$fourth</span><span style="color: #007700">)&nbsp;=&nbsp;[</span><span style="color: #0000BB">1</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">2</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">3</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">4</span><span style="color: #007700">];<br />echo&nbsp;</span><span style="color: #DD0000">"</span><span style="color: #0000BB">$second</span><span style="color: #DD0000">,&nbsp;</span><span style="color: #0000BB">$fourth</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;</span>
</span>
</pre></div>
</div>
<div class="example-contents"><p>以上例程会输出:</p></div>
<div class="example-contents screen">
<div class="cdata"><pre>
id: 1, name: Tom
id: 2, name: Fred
2, 4
</pre></div>
</div>
</div>
</p>
</div>
<div class="refsect1 seealso" id="refsect1-function.list-seealso">
<h3 class="title">参见</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="each.html" class="function" rel="rdfs-seeAlso">each()</a> - 返回数组中当前的键/值对并将数组指针向前移动一步</span></li>
<li class="member"><span class="function"><a href="array.html" class="function" rel="rdfs-seeAlso">array()</a> - 新建一个数组</span></li>
<li class="member"><span class="function"><a href="extract.html" class="function" rel="rdfs-seeAlso">extract()</a> - 从数组中将变量导入到当前的符号表</span></li>
</ul>
</p>
</div>
</div></div></div></body></html>