<?xml version="1.0" encoding="iso-8859-1"?> <!-- $Revision: 1.16 $ --> <!-- splitted from ./en/functions/array.xml, last change in rev 1.2 --> <refentry id="function.count"> <refnamediv> <refname>count</refname> <refpurpose>Count elements in an array, or properties in an object</refpurpose> </refnamediv> <refsect1> <title>Description</title> <methodsynopsis> <type>int</type><methodname>count</methodname> <methodparam><type>mixed</type><parameter>var</parameter></methodparam> <methodparam choice="opt"><type>int</type><parameter>mode</parameter></methodparam> </methodsynopsis> <para> Returns the number of elements in <parameter>var</parameter>, which is typically an <type>array</type>, since anything other will have one element. </para> <para> For objects, if you have <link linkend="ref.spl">SPL</link> installed, you can hook into <function>count</function> by implementing interface <literal>Countable</literal>. The interface has exactly one method, <function>count</function>, which returns the return value for the <function>count</function> function. </para> <para> If <parameter>var</parameter> is not an array or an object with implemented <literal>Countable</literal> interface, <literal>1</literal> will be returned. There is one exception, if <parameter>var</parameter> is &null;, <literal>0</literal> will be returned. </para> <note> <simpara> The optional <parameter>mode</parameter> parameter is available as of PHP 4.2.0. </simpara> </note> <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. The default value for <parameter>mode</parameter> is <literal>0</literal>. <function>count</function> does not detect infinite recursion. </para> <caution> <para> <function>count</function> may return 0 for a variable that isn't set, but it may also return 0 for a variable that has been initialized with an empty array. Use <function>isset</function> to test if a variable is set. </para> </caution> <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> <para> <example> <title><function>count</function> example</title> <programlisting role="php"> <![CDATA[ <?php $a[0] = 1; $a[1] = 3; $a[2] = 5; $result = count($a); // $result == 3 $b[0] = 7; $b[5] = 9; $b[10] = 11; $result = count($b); // $result == 3 $result = count(null); // $result == 0 $result = count(false); // $result == 1 ?> ]]> </programlisting> </example> </para> <para> <example> <title> Recursive <function>count</function> example (PHP >= 4.2.0) </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> <para> See also <function>is_array</function>, <function>isset</function>, and <function>strlen</function>. </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:"../../../../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 -->