php-doc-en/reference/var/functions/empty.xml
Adam Harvey 8ad0d94e1c Add initial migration guide for PHP 5.5.
What's done: the migration guide itself, updates to existing functions and
functionality, and new language features.

What's not done: stub pages for new functions and methods. (I'd rather get this
in now, though, than have it languish on my hard drive any longer so that other
people can contribute.)

What could use help: the generator chapter is pretty rough and ready. Better
examples would be awesome. I certainly won't argue if somebody wants to add the
function stubs, either.


git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@328430 c90b9560-bf6c-de11-be94-00142212c4b1
2012-11-20 15:17:23 +00:00

224 lines
5.9 KiB
XML

<?xml version="1.0" encoding="utf-8"?>
<!-- $Revision$ -->
<refentry xml:id="function.empty" xmlns="http://docbook.org/ns/docbook">
<refnamediv>
<refname>empty</refname>
<refpurpose>Determine whether a variable is empty</refpurpose>
</refnamediv>
<refsect1 role="description">
&reftitle.description;
<methodsynopsis>
<type>bool</type><methodname>empty</methodname>
<methodparam><type>mixed</type><parameter>var</parameter></methodparam>
</methodsynopsis>
<para>
Determine whether a variable is considered to be empty. A variable is considered empty if it does not exist or if its value equals &false;. <function>empty</function> does not generate a warning if the variable does not exist.
</para>
</refsect1>
<refsect1 role="parameters">
&reftitle.parameters;
<para>
<variablelist>
<varlistentry>
<term><parameter>var</parameter></term>
<listitem>
<para>
Variable to be checked
</para>
<note>
<para>
Prior to PHP 5.5, <function>empty</function> only supports variables;
anything else will result in a parse error. In other words, the
following will not work: <command>empty(trim($name))</command>.
Instead, use <command>trim($name) == false</command>.
</para>
</note>
<para>
No warning is generated if the variable does not exist.
That means <function>empty</function> is essentially the
concise equivalent to <command>!isset($var) || $var == false</command>.
</para>
</listitem>
</varlistentry>
</variablelist>
</para>
</refsect1>
<refsect1 role="returnvalues">
&reftitle.returnvalues;
<para>
Returns &false; if <parameter>var</parameter> exists and has a non-empty, non-zero value.
Otherwise returns &true;.
</para>
<para>
The following things are considered to be empty:
<simplelist>
<member><literal>""</literal> (an empty string)</member>
<member><literal>0</literal> (0 as an integer)</member>
<member><literal>0.0</literal> (0 as a float)</member>
<member><literal>"0"</literal> (0 as a string)</member>
<member>&null;</member>
<member>&false;</member>
<member><literal>array()</literal> (an empty array)</member>
<member><literal>$var;</literal> (a variable declared, but without a value)</member>
</simplelist>
</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>5.5.0</entry>
<entry>
<para>
<function>empty</function> now supports expressions, rather than only
variables.
</para>
</entry>
</row>
<row>
<entry>5.4.0</entry>
<entry>
<para>
Checking non-numeric offsets of strings returns &true;.
</para>
</entry>
</row>
<row>
<entry>5.0.0</entry>
<entry>
<para>
Objects with no properties are no longer considered empty.
</para>
</entry>
</row>
</tbody>
</tgroup>
</informaltable>
</para>
</refsect1>
<refsect1 role="examples">
&reftitle.examples;
<para>
<example>
<title>
A simple <function>empty</function> / <function>isset</function>
comparison.
</title>
<programlisting role="php">
<![CDATA[
<?php
$var = 0;
// Evaluates to true because $var is empty
if (empty($var)) {
echo '$var is either 0, empty, or not set at all';
}
// Evaluates as true because $var is set
if (isset($var)) {
echo '$var is set even though it is empty';
}
?>
]]>
</programlisting>
</example>
</para>
<example>
<title><function>empty</function> on String Offsets</title>
<para>
PHP 5.4 changes how <function>empty</function> behaves
when passed string offsets.
</para>
<programlisting role="php">
<![CDATA[
<?php
$expected_array_got_string = 'somestring';
var_dump(empty($expected_array_got_string['some_key']));
var_dump(empty($expected_array_got_string[0]));
var_dump(empty($expected_array_got_string['0']));
var_dump(empty($expected_array_got_string[0.5]));
var_dump(empty($expected_array_got_string['0.5']));
var_dump(empty($expected_array_got_string['0 Mostel']));
?>
]]>
</programlisting>
&example.outputs.53;
<screen>
<![CDATA[
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
bool(false)
]]>
</screen>
&example.outputs.54;
<screen>
<![CDATA[
bool(true)
bool(false)
bool(false)
bool(false)
bool(true)
bool(true)
]]>
</screen>
</example>
</refsect1>
<refsect1 role="notes">
&reftitle.notes;
&note.language-construct;
<note>
<para>
When using <function>empty</function> on inaccessible object properties,
the <link linkend="object.isset">__isset()</link>
overloading method will be called, if declared.
</para>
</note>
</refsect1>
<refsect1 role="seealso">
&reftitle.seealso;
<para>
<simplelist>
<member><function>isset</function></member>
<member><link linkend="object.isset">__isset()</link></member>
<member><function>unset</function></member>
<member><function>array_key_exists</function></member>
<member><function>count</function></member>
<member><function>strlen</function></member>
<member><link linkend="types.comparisons">The type comparison tables</link></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
-->