<?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 &gt;= 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
-->