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

218 lines
16 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>检测变量是否已设置并且非 NULL</title>
</head>
<body class="docs"><div id="layout">
<div id="layout-content"><div id="function.isset" class="refentry">
<div class="refnamediv">
<h1 class="refname">isset</h1>
<p class="verinfo">(PHP 4, PHP 5, PHP 7)</p><p class="refpurpose"><span class="refname">isset</span> &mdash; <span class="dc-title">检测变量是否已设置并且非 <strong><code>NULL</code></strong></span></p>
</div>
<div class="refsect1 description" id="refsect1-function.isset-description">
<h3 class="title">说明</h3>
<div class="methodsynopsis dc-description">
<span class="methodname"><strong>isset</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">$var</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">bool</span></div>
<p class="para rdfs-comment">
检测变量是否设置,并且不是 <strong><code>NULL</code></strong>
</p>
<p class="para">
如果已经使用 <span class="function"><a href="unset.html" class="function">unset()</a></span>
释放了一个变量之后,它将不再是
<span class="function"><strong>isset()</strong></span>。若使用 <span class="function"><strong>isset()</strong></span>
测试一个被设置成 <strong><code>NULL</code></strong> 的变量,将返回 <strong><code>FALSE</code></strong>。同时要注意的是 null 字符(<em>&quot;\0&quot;</em>)并不等同于
PHP 的 <strong><code>NULL</code></strong> 常量。
</p>
<p class="para">
如果一次传入多个参数,那么
<span class="function"><strong>isset()</strong></span> 只有在全部参数都以被设置时返回 <strong><code>TRUE</code></strong> 计算过程从左至右,中途遇到没有设置的变量时就会立即停止。
</p>
</div>
<div class="refsect1 parameters" id="refsect1-function.isset-parameters">
<h3 class="title">参数</h3>
<p class="para">
<dl>
<dt>
<code class="parameter">var</code></dt>
<dd>
<p class="para">
要检查的变量。
</p>
</dd>
<dt>
<code class="parameter">...</code></dt>
<dd>
<p class="para">
其他变量。
</p>
</dd>
</dl>
</p>
</div>
<div class="refsect1 returnvalues" id="refsect1-function.isset-returnvalues">
<h3 class="title">返回值</h3>
<p class="para">
如果 <code class="parameter">var</code> 存在并且值不是 <strong><code>NULL</code></strong> 则返回 <strong><code>TRUE</code></strong>,否则返回 <strong><code>FALSE</code></strong>
</p>
</div>
<div class="refsect1 changelog" id="refsect1-function.isset-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>5.4.0</td>
<td>
<p class="para">
检查字符的非数字偏移量将会返回 <strong><code>FALSE</code></strong>
</p>
</td>
</tr>
</tbody>
</table>
</p>
</div>
<div class="refsect1 examples" id="refsect1-function.isset-examples">
<h3 class="title">范例</h3>
<p class="para">
<div class="example" id="example-6365">
<p><strong>Example #1 <span class="function"><strong>isset()</strong></span> 例子</strong></p>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br />$var&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">''</span><span style="color: #007700">;<br /><br /></span><span style="color: #FF8000">//&nbsp;结果为&nbsp;TRUE所以后边的文本将被打印出来。<br /></span><span style="color: #007700">if&nbsp;(isset(</span><span style="color: #0000BB">$var</span><span style="color: #007700">))&nbsp;{<br />&nbsp;&nbsp;&nbsp;&nbsp;echo&nbsp;</span><span style="color: #DD0000">"This&nbsp;var&nbsp;is&nbsp;set&nbsp;so&nbsp;I&nbsp;will&nbsp;print."</span><span style="color: #007700">;<br />}<br /><br /></span><span style="color: #FF8000">//&nbsp;在后边的例子中,我们将使用&nbsp;var_dump&nbsp;输出&nbsp;isset()&nbsp;的返回值。<br />//&nbsp;the&nbsp;return&nbsp;value&nbsp;of&nbsp;isset().<br /><br /></span><span style="color: #0000BB">$a&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"test"</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">$b&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">"anothertest"</span><span style="color: #007700">;<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;TRUE<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</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: #FF8000">//&nbsp;TRUE<br /><br /></span><span style="color: #007700">unset&nbsp;(</span><span style="color: #0000BB">$a</span><span style="color: #007700">);<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;FALSE<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</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: #FF8000">//&nbsp;FALSE<br /><br /></span><span style="color: #0000BB">$foo&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$foo</span><span style="color: #007700">));&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;FALSE<br /><br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
<p class="para">
这对于数组中的元素也同样有效:
<div class="informalexample">
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br /><br />$a&nbsp;</span><span style="color: #007700">=&nbsp;array&nbsp;(</span><span style="color: #DD0000">'test'&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">'hello'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #0000BB">NULL</span><span style="color: #007700">,&nbsp;</span><span style="color: #DD0000">'pie'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;array(</span><span style="color: #DD0000">'a'&nbsp;</span><span style="color: #007700">=&gt;&nbsp;</span><span style="color: #DD0000">'apple'</span><span style="color: #007700">));<br /><br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'test'</span><span style="color: #007700">]));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;TRUE<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'foo'</span><span style="color: #007700">]));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;FALSE<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'hello'</span><span style="color: #007700">]));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;FALSE<br /><br />//&nbsp;&nbsp;'hello'&nbsp;的值等于&nbsp;NULL所以被认为是未置值的。<br />//&nbsp;如果想检测&nbsp;NULL&nbsp;键值,可以试试下边的方法。&nbsp;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(</span><span style="color: #0000BB">array_key_exists</span><span style="color: #007700">(</span><span style="color: #DD0000">'hello'</span><span style="color: #007700">,&nbsp;</span><span style="color: #0000BB">$a</span><span style="color: #007700">));&nbsp;</span><span style="color: #FF8000">//&nbsp;TRUE<br /><br />//&nbsp;Checking&nbsp;deeper&nbsp;array&nbsp;values<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'pie'</span><span style="color: #007700">][</span><span style="color: #DD0000">'a'</span><span style="color: #007700">]));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;TRUE<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'pie'</span><span style="color: #007700">][</span><span style="color: #DD0000">'b'</span><span style="color: #007700">]));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;FALSE<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$a</span><span style="color: #007700">[</span><span style="color: #DD0000">'cake'</span><span style="color: #007700">][</span><span style="color: #DD0000">'a'</span><span style="color: #007700">][</span><span style="color: #DD0000">'b'</span><span style="color: #007700">]));&nbsp;&nbsp;</span><span style="color: #FF8000">//&nbsp;FALSE<br /><br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
</div>
</p>
<div class="example" id="example-6366">
<p><strong>Example #2 在字符串位移中使用 <span class="function"><strong>isset()</strong></span></strong></p>
<div class="example-contents"><p>
PHP 5.4 改变了传入字符串位移时 <span class="function"><strong>isset()</strong></span> 的行为。
</p></div>
<div class="example-contents">
<div class="phpcode"><pre><span style="color: #000000">
<span style="color: #0000BB">&lt;?php<br />$expected_array_got_string&nbsp;</span><span style="color: #007700">=&nbsp;</span><span style="color: #DD0000">'somestring'</span><span style="color: #007700">;<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$expected_array_got_string</span><span style="color: #007700">[</span><span style="color: #DD0000">'some_key'</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$expected_array_got_string</span><span style="color: #007700">[</span><span style="color: #0000BB">0</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$expected_array_got_string</span><span style="color: #007700">[</span><span style="color: #DD0000">'0'</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$expected_array_got_string</span><span style="color: #007700">[</span><span style="color: #0000BB">0.5</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$expected_array_got_string</span><span style="color: #007700">[</span><span style="color: #DD0000">'0.5'</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">var_dump</span><span style="color: #007700">(isset(</span><span style="color: #0000BB">$expected_array_got_string</span><span style="color: #007700">[</span><span style="color: #DD0000">'0&nbsp;Mostel'</span><span style="color: #007700">]));<br /></span><span style="color: #0000BB">?&gt;</span>
</span>
</pre></div>
</div>
<div class="example-contents"><p>以上例程在PHP 5.3中的输出:</p></div>
<div class="example-contents screen">
<div class="cdata"><pre>
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
bool(true)
</pre></div>
</div>
<div class="example-contents"><p>以上例程在PHP 5.4中的输出:</p></div>
<div class="example-contents screen">
<div class="cdata"><pre>
bool(false)
bool(true)
bool(true)
bool(true)
bool(false)
bool(false)
</pre></div>
</div>
</div>
</div>
<div class="refsect1 notes" id="refsect1-function.isset-notes">
<h3 class="title">注释</h3>
<div class="warning"><strong class="warning">Warning</strong>
<p class="para">
<span class="function"><strong>isset()</strong></span>
只能用于变量,因为传递任何其它参数都将造成解析错误。若想检测<a href="language.constants.html" class="link">常量</a>是否已设置,可使用
<span class="function"><a href="defined.html" class="function">defined()</a></span> 函数。
</p>
</div>
<blockquote class="note"><p><strong class="note">Note</strong>: <span class="simpara">因为是一个语言构造器而不是一个函数,不能被
<a href="functions.variable_functions.html" class="link">可变函数</a> 调用。
</span>
</p></blockquote>
<blockquote class="note"><p><strong class="note">Note</strong>:
<p class="para">
如果使用 <span class="function"><strong>isset()</strong></span> 来检查对象无法访问的属性,如果 <a href="language.oop5.overloading.html#object.isset" class="link">__isset()</a>
方法已经定义则会调用这个重载方法。
</p>
</p></blockquote>
</div>
<div class="refsect1 seealso" id="refsect1-function.isset-seealso">
<h3 class="title">参见</h3>
<p class="para">
<ul class="simplelist">
<li class="member"><span class="function"><a href="empty.html" class="function" rel="rdfs-seeAlso">empty()</a> - 检查一个变量是否为空</span></li>
<li class="member"><a href="language.oop5.overloading.html#object.isset" class="link">__isset()</a></li>
<li class="member"><span class="function"><a href="unset.html" class="function" rel="rdfs-seeAlso">unset()</a> - 释放给定的变量</span></li>
<li class="member"><span class="function"><a href="defined.html" class="function" rel="rdfs-seeAlso">defined()</a> - 检查某个名称的常量是否存在</span></li>
<li class="member"><a href="types.comparisons.html" class="link">the type comparison tables</a></li>
<li class="member"><span class="function"><a href="array_key_exists.html" class="function" rel="rdfs-seeAlso">array_key_exists()</a> - 检查数组里是否有指定的键名或索引</span></li>
<li class="member"><span class="function"><a href="is_null.html" class="function" rel="rdfs-seeAlso">is_null()</a> - 检测变量是否为 NULL</span></li>
<li class="member">错误控制
<a href="language.operators.errorcontrol.html" class="link">@</a>
运算符。</li>
</ul>
</p>
</div>
</div></div></div></body></html>