mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-18 13:57:03 +08:00
297 lines
21 KiB
HTML
297 lines
21 KiB
HTML
<!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> — <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"><?php<br /><br />$info </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'coffee'</span><span style="color: #007700">, </span><span style="color: #DD0000">'brown'</span><span style="color: #007700">, </span><span style="color: #DD0000">'caffeine'</span><span style="color: #007700">);<br /><br /></span><span style="color: #FF8000">// 列出所有变量<br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$drink</span><span style="color: #007700">, </span><span style="color: #0000BB">$color</span><span style="color: #007700">, </span><span style="color: #0000BB">$power</span><span style="color: #007700">) = </span><span style="color: #0000BB">$info</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$drink</span><span style="color: #DD0000"> is </span><span style="color: #0000BB">$color</span><span style="color: #DD0000"> and </span><span style="color: #0000BB">$power</span><span style="color: #DD0000"> makes it special.\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// 列出他们的其中一个<br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$drink</span><span style="color: #007700">, , </span><span style="color: #0000BB">$power</span><span style="color: #007700">) = </span><span style="color: #0000BB">$info</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$drink</span><span style="color: #DD0000"> has </span><span style="color: #0000BB">$power</span><span style="color: #DD0000">.\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// 或者让我们跳到仅第三个<br /></span><span style="color: #007700">list( , , </span><span style="color: #0000BB">$power</span><span style="color: #007700">) = </span><span style="color: #0000BB">$info</span><span style="color: #007700">;<br />echo </span><span style="color: #DD0000">"I need </span><span style="color: #0000BB">$power</span><span style="color: #DD0000">!\n"</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">// list() 不能对字符串起作用<br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$bar</span><span style="color: #007700">) = </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">); </span><span style="color: #FF8000">// NULL<br /></span><span style="color: #0000BB">?></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">
|
||
<table><br /> <tr><br /> <th>Employee name</th><br /> <th>Salary</th><br /> </tr><br /><br /><span style="color: #0000BB"><?php<br /><br />$result </span><span style="color: #007700">= </span><span style="color: #0000BB">$pdo</span><span style="color: #007700">-></span><span style="color: #0000BB">query</span><span style="color: #007700">(</span><span style="color: #DD0000">"SELECT id, name, salary FROM employees"</span><span style="color: #007700">);<br />while (list(</span><span style="color: #0000BB">$id</span><span style="color: #007700">, </span><span style="color: #0000BB">$name</span><span style="color: #007700">, </span><span style="color: #0000BB">$salary</span><span style="color: #007700">) = </span><span style="color: #0000BB">$result</span><span style="color: #007700">-></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">)) {<br /> echo </span><span style="color: #DD0000">" <tr>\n" </span><span style="color: #007700">.<br /> </span><span style="color: #DD0000">" <td><a href=\"info.php?id=</span><span style="color: #0000BB">$id</span><span style="color: #DD0000">\"></span><span style="color: #0000BB">$name</span><span style="color: #DD0000"></a></td>\n" </span><span style="color: #007700">.<br /> </span><span style="color: #DD0000">" <td></span><span style="color: #0000BB">$salary</span><span style="color: #DD0000"></td>\n" </span><span style="color: #007700">.<br /> </span><span style="color: #DD0000">" </tr>\n"</span><span style="color: #007700">;<br />}<br /><br /><br /></span><span style="color: #0000BB">?><br /></span><br /></table></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"><?php<br /><br /></span><span style="color: #007700">list(</span><span style="color: #0000BB">$a</span><span style="color: #007700">, list(</span><span style="color: #0000BB">$b</span><span style="color: #007700">, </span><span style="color: #0000BB">$c</span><span style="color: #007700">)) = array(</span><span style="color: #0000BB">1</span><span style="color: #007700">, array(</span><span style="color: #0000BB">2</span><span style="color: #007700">, </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">, </span><span style="color: #0000BB">$b</span><span style="color: #007700">, </span><span style="color: #0000BB">$c</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">?></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"><?php<br /><br />$info </span><span style="color: #007700">= array(</span><span style="color: #DD0000">'coffee'</span><span style="color: #007700">, </span><span style="color: #DD0000">'brown'</span><span style="color: #007700">, </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">], </span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">1</span><span style="color: #007700">], </span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #0000BB">2</span><span style="color: #007700">]) = </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">?></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]=>
|
||
string(6) "coffee"
|
||
[1]=>
|
||
string(5) "brown"
|
||
[2]=>
|
||
string(8) "caffeine"
|
||
}
|
||
</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]=>
|
||
string(8) "caffeine"
|
||
[1]=>
|
||
string(5) "brown"
|
||
[0]=>
|
||
string(6) "coffee"
|
||
}
|
||
</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"><?php<br />$foo </span><span style="color: #007700">= array(</span><span style="color: #0000BB">2 </span><span style="color: #007700">=> </span><span style="color: #DD0000">'a'</span><span style="color: #007700">, </span><span style="color: #DD0000">'foo' </span><span style="color: #007700">=> </span><span style="color: #DD0000">'b'</span><span style="color: #007700">, </span><span style="color: #0000BB">0 </span><span style="color: #007700">=> </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">] = </span><span style="color: #DD0000">'d'</span><span style="color: #007700">;<br />list(</span><span style="color: #0000BB">$x</span><span style="color: #007700">, </span><span style="color: #0000BB">$y</span><span style="color: #007700">, </span><span style="color: #0000BB">$z</span><span style="color: #007700">) = </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">, </span><span style="color: #0000BB">$x</span><span style="color: #007700">, </span><span style="color: #0000BB">$y</span><span style="color: #007700">, </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]=>
|
||
string(1) "a"
|
||
["foo"]=>
|
||
string(1) "b"
|
||
[0]=>
|
||
string(1) "c"
|
||
[1]=>
|
||
string(1) "d"
|
||
}
|
||
string(1) "c"
|
||
string(1) "d"
|
||
string(1) "a"
|
||
</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"><?php<br />$data </span><span style="color: #007700">= [<br /> [</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=> </span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=> </span><span style="color: #DD0000">'Tom'</span><span style="color: #007700">],<br /> [</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=> </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=> </span><span style="color: #DD0000">'Fred'</span><span style="color: #007700">],<br />];<br />foreach (</span><span style="color: #0000BB">$data </span><span style="color: #007700">as [</span><span style="color: #DD0000">"id" </span><span style="color: #007700">=> </span><span style="color: #0000BB">$id</span><span style="color: #007700">, </span><span style="color: #DD0000">"name" </span><span style="color: #007700">=> </span><span style="color: #0000BB">$name</span><span style="color: #007700">]) {<br /> echo </span><span style="color: #DD0000">"id: </span><span style="color: #0000BB">$id</span><span style="color: #DD0000">, name: </span><span style="color: #0000BB">$name</span><span style="color: #DD0000">\n"</span><span style="color: #007700">;<br />}<br />echo </span><span style="color: #0000BB">PHP_EOL</span><span style="color: #007700">;<br />list(</span><span style="color: #0000BB">1 </span><span style="color: #007700">=> </span><span style="color: #0000BB">$second</span><span style="color: #007700">, </span><span style="color: #0000BB">3 </span><span style="color: #007700">=> </span><span style="color: #0000BB">$fourth</span><span style="color: #007700">) = [</span><span style="color: #0000BB">1</span><span style="color: #007700">, </span><span style="color: #0000BB">2</span><span style="color: #007700">, </span><span style="color: #0000BB">3</span><span style="color: #007700">, </span><span style="color: #0000BB">4</span><span style="color: #007700">];<br />echo </span><span style="color: #DD0000">"</span><span style="color: #0000BB">$second</span><span style="color: #DD0000">, </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> |