mirror of
https://github.com/sigmasternchen/php-doc-en
synced 2025-03-21 11:28:55 +00:00

Follows from general PHP behavior (undefined variable reads as NULL) and discusses something nobody should be doing in the first place. This was probably more relevant ten years ago than it is now. git-svn-id: https://svn.php.net/repository/phpdoc/en/trunk@345126 c90b9560-bf6c-de11-be94-00142212c4b1
191 lines
5.2 KiB
XML
191 lines
5.2 KiB
XML
<?xml version="1.0" encoding="utf-8"?>
|
|
<!-- $Revision$ -->
|
|
<refentry xml:id="function.count" xmlns="http://docbook.org/ns/docbook">
|
|
<refnamediv>
|
|
<refname>count</refname>
|
|
<refpurpose>Count all elements in an array, or something in an object</refpurpose>
|
|
</refnamediv>
|
|
<refsect1 role="description">
|
|
&reftitle.description;
|
|
<methodsynopsis>
|
|
<type>int</type><methodname>count</methodname>
|
|
<methodparam><type>mixed</type><parameter>array_or_countable</parameter></methodparam>
|
|
<methodparam choice="opt"><type>int</type><parameter>mode</parameter><initializer>COUNT_NORMAL</initializer></methodparam>
|
|
</methodsynopsis>
|
|
<para>
|
|
Counts all elements in an array, or something in an object.
|
|
</para>
|
|
<para>
|
|
For objects, if you have
|
|
<link linkend="ref.spl">SPL</link> installed, you can hook into
|
|
<function>count</function> by implementing interface
|
|
<classname>Countable</classname>. The interface has exactly one method,
|
|
<methodname>Countable::count</methodname>, which returns the return value for the
|
|
<function>count</function> function.
|
|
</para>
|
|
<para>
|
|
Please see the <link linkend="language.types.array">Array</link>
|
|
section of the manual for a detailed explanation of how arrays
|
|
are implemented and used in PHP.
|
|
</para>
|
|
</refsect1>
|
|
<refsect1 role="parameters">
|
|
&reftitle.parameters;
|
|
<para>
|
|
<variablelist>
|
|
<varlistentry>
|
|
<term><parameter>array_or_countable</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
An array or <classname>Countable</classname> object.
|
|
</para>
|
|
</listitem>
|
|
</varlistentry>
|
|
<varlistentry>
|
|
<term><parameter>mode</parameter></term>
|
|
<listitem>
|
|
<para>
|
|
If the optional <parameter>mode</parameter> parameter is set to
|
|
<constant>COUNT_RECURSIVE</constant> (or 1), <function>count</function>
|
|
will recursively count the array. This is particularly useful for
|
|
counting all the elements of a multidimensional array.
|
|
</para>
|
|
<caution>
|
|
<para>
|
|
<function>count</function> can detect recursion to avoid an infinite
|
|
loop, but will emit an <constant>E_WARNING</constant> every time it
|
|
does (in case the array contains itself more than once) and return a
|
|
count higher than may be expected.
|
|
</para>
|
|
</caution>
|
|
</listitem>
|
|
</varlistentry>
|
|
</variablelist>
|
|
</para>
|
|
</refsect1>
|
|
<refsect1 role="returnvalues">
|
|
&reftitle.returnvalues;
|
|
<para>
|
|
Returns the number of elements in <parameter>array_or_countable</parameter>.
|
|
When the parameter is neither an array nor an object with
|
|
implemented <classname>Countable</classname> interface,
|
|
<literal>1</literal> will be returned.
|
|
There is one exception, if <parameter>array_or_countable</parameter> is &null;,
|
|
<literal>0</literal> will be returned.
|
|
</para>
|
|
</refsect1>
|
|
<refsect1 role="examples">
|
|
&reftitle.examples;
|
|
<para>
|
|
<example>
|
|
<title><function>count</function> example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$a[0] = 1;
|
|
$a[1] = 3;
|
|
$a[2] = 5;
|
|
var_dump(count($a));
|
|
|
|
$b[0] = 7;
|
|
$b[5] = 9;
|
|
$b[10] = 11;
|
|
var_dump(count($b));
|
|
|
|
var_dump(count(null));
|
|
|
|
var_dump(count(false));
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
&example.outputs;
|
|
<screen role="php">
|
|
<![CDATA[
|
|
int(3)
|
|
int(3)
|
|
|
|
Warning: count(): Parameter must be an array or an object that implements Countable in … on line 12 // as of PHP 7.2
|
|
int(0)
|
|
|
|
Warning: count(): Parameter must be an array or an object that implements Countable in … on line 14 // as of PHP 7.2
|
|
int(1)
|
|
]]>
|
|
</screen>
|
|
</example>
|
|
</para>
|
|
<para>
|
|
<example>
|
|
<title>Recursive <function>count</function> example</title>
|
|
<programlisting role="php">
|
|
<![CDATA[
|
|
<?php
|
|
$food = array('fruits' => array('orange', 'banana', 'apple'),
|
|
'veggie' => array('carrot', 'collard', 'pea'));
|
|
|
|
// recursive count
|
|
echo count($food, COUNT_RECURSIVE); // output 8
|
|
|
|
// normal count
|
|
echo count($food); // output 2
|
|
|
|
?>
|
|
]]>
|
|
</programlisting>
|
|
</example>
|
|
</para>
|
|
</refsect1>
|
|
<refsect1 role="changelog">
|
|
&reftitle.changelog;
|
|
<informaltable>
|
|
<tgroup cols="2">
|
|
<thead>
|
|
<row>
|
|
<entry>&Version;</entry>
|
|
<entry>&Description;</entry>
|
|
</row>
|
|
</thead>
|
|
<tbody>
|
|
<row>
|
|
<entry>7.2.0</entry>
|
|
<entry>
|
|
<function>count</function> will now yield a warning on invalid countable types
|
|
passed to the <parameter>array_or_countable</parameter> parameter.
|
|
</entry>
|
|
</row>
|
|
</tbody>
|
|
</tgroup>
|
|
</informaltable>
|
|
</refsect1>
|
|
<refsect1 role="seealso">
|
|
&reftitle.seealso;
|
|
<para>
|
|
<simplelist>
|
|
<member><function>is_array</function></member>
|
|
<member><function>isset</function></member>
|
|
<member><function>empty</function></member>
|
|
<member><function>strlen</function></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
|
|
-->
|