reference/var/functions/empty.xml
e6e9c116083c3d1aeb3d1fc2e45f51fbcb0d5182
e6e9c116083c3d1aeb3d1fc2e45f51fbcb0d5182
...
...
@@ -25,18 +25,11 @@
25
25
<para>
26
26
Variable to be checked
27
27
</para>
28
-
<note>
29
-
<para>
30
-
Prior to PHP 5.5, <function>empty</function> only supports variables;
31
-
anything else will result in a parse error. In other words, the
32
-
following will not work: <command>empty(trim($name))</command>.
33
-
Instead, use <command>trim($name) == false</command>.
34
-
</para>
35
-
</note>
36
28
<para>
37
29
No warning is generated if the variable does not exist.
38
30
That means <function>empty</function> is essentially the
39
31
concise equivalent to <command>!isset($var) || $var == false</command>.
32
+
This also applies to nested structures, such as a multidimensional array or chained properties.
40
33
</para>
41
34
</listitem>
42
35
</varlistentry>
...
...
@@ -46,55 +39,9 @@
46
39
<refsect1 role="returnvalues">
47
40
&reftitle.returnvalues;
48
41
<para>
49
-
Returns &false; if <parameter>var</parameter> exists and has a non-empty, non-zero value.
50
-
Otherwise returns &true;.
51
-
</para>
52
-
<para>
53
-
The following things are considered to be empty:
54
-
<simplelist>
55
-
<member><literal>""</literal> (an empty string)</member>
56
-
<member><literal>0</literal> (0 as an integer)</member>
57
-
<member><literal>0.0</literal> (0 as a float)</member>
58
-
<member><literal>"0"</literal> (0 as a string)</member>
59
-
<member>&null;</member>
60
-
<member>&false;</member>
61
-
<member><literal>array()</literal> (an empty array)</member>
62
-
<member><literal>$var;</literal> (a variable declared, but without a value)</member>
63
-
</simplelist>
64
-
</para>
65
-
</refsect1>
66
-
<refsect1 role="changelog">
67
-
&reftitle.changelog;
68
-
<para>
69
-
<informaltable>
70
-
<tgroup cols="2">
71
-
<thead>
72
-
<row>
73
-
<entry>&Version;</entry>
74
-
<entry>&Description;</entry>
75
-
</row>
76
-
</thead>
77
-
<tbody>
78
-
<row>
79
-
<entry>5.5.0</entry>
80
-
<entry>
81
-
<para>
82
-
<function>empty</function> now supports expressions, rather than only
83
-
variables.
84
-
</para>
85
-
</entry>
86
-
</row>
87
-
<row>
88
-
<entry>5.4.0</entry>
89
-
<entry>
90
-
<para>
91
-
Checking non-numeric offsets of strings returns &true;.
92
-
</para>
93
-
</entry>
94
-
</row>
95
-
</tbody>
96
-
</tgroup>
97
-
</informaltable>
42
+
Returns &true; if <parameter>var</parameter> does not exist or has a value that is empty or equal to zero,
43
+
aka falsey, see <link linkend="language.types.boolean.casting">conversion to boolean</link>.
44
+
Otherwise returns &false;.
98
45
</para>
99
46
</refsect1>
100
47
<refsect1 role="examples">
...
...
@@ -126,10 +73,6 @@ if (isset($var)) {
126
73
</para>
127
74
<example>
128
75
<title><function>empty</function> on String Offsets</title>
129
-
<para>
130
-
PHP 5.4 changes how <function>empty</function> behaves
131
-
when passed string offsets.
132
-
</para>
133
76
<programlisting role="php">
134
77
<![CDATA[
135
78
<?php
...
...
@@ -137,32 +80,51 @@ $expected_array_got_string = 'somestring';
137
80
var_dump(empty($expected_array_got_string['some_key']));
138
81
var_dump(empty($expected_array_got_string[0]));
139
82
var_dump(empty($expected_array_got_string['0']));
140
-
var_dump(empty($expected_array_got_string[0.5]));
141
83
var_dump(empty($expected_array_got_string['0.5']));
142
84
var_dump(empty($expected_array_got_string['0 Mostel']));
143
85
?>
144
86
]]>
145
87
</programlisting>
146
-
&example.outputs.53;
88
+
&example.outputs;
147
89
<screen>
148
90
<![CDATA[
91
+
bool(true)
149
92
bool(false)
150
93
bool(false)
151
-
bool(false)
152
-
bool(false)
153
-
bool(false)
154
-
bool(false)
94
+
bool(true)
95
+
bool(true)
155
96
]]>
156
97
</screen>
157
-
&example.outputs.54;
98
+
</example>
99
+
<example>
100
+
<title><function>empty</function> on multidimensional arrays</title>
101
+
<programlisting role="php">
102
+
<![CDATA[
103
+
<?php
104
+
$multidimensional = [
105
+
'some' => [
106
+
'deep' => [
107
+
'nested' => 'value'
108
+
]
109
+
]
110
+
];
111
+
112
+
if (!empty($multidimensional['some']['some']['nested'])) {
113
+
$someVariable = $multidimensional['some']['deep']['nested'];
114
+
}
115
+
116
+
var_dump(empty($multidimensional['some-undefined-key']));
117
+
var_dump(empty($multidimensional['some']['deep']['unknown']));
118
+
var_dump(empty($multidimensional['some']['deep']['nested']));
119
+
?>
120
+
]]>
121
+
</programlisting>
122
+
&example.outputs;
158
123
<screen>
159
124
<![CDATA[
160
125
bool(true)
161
-
bool(false)
162
-
bool(false)
163
-
bool(false)
164
-
bool(true)
165
126
bool(true)
127
+
bool(false)
166
128
]]>
167
129
</screen>
168
130
</example>
169
131