2002-05-12 08:19:28 +00:00
|
|
|
<?xml version="1.0" encoding="iso-8859-1"?>
|
2005-03-21 09:47:52 +00:00
|
|
|
<!-- $Revision: 1.17 $ -->
|
2002-04-15 00:12:54 +00:00
|
|
|
<!-- splitted from ./en/functions/array.xml, last change in rev 1.2 -->
|
|
|
|
<refentry id="function.count">
|
|
|
|
<refnamediv>
|
|
|
|
<refname>count</refname>
|
2004-11-03 07:30:01 +00:00
|
|
|
<refpurpose>Count elements in an array, or properties in an object</refpurpose>
|
2002-04-15 00:12:54 +00:00
|
|
|
</refnamediv>
|
|
|
|
<refsect1>
|
|
|
|
<title>Description</title>
|
|
|
|
<methodsynopsis>
|
|
|
|
<type>int</type><methodname>count</methodname>
|
|
|
|
<methodparam><type>mixed</type><parameter>var</parameter></methodparam>
|
2003-07-19 06:51:26 +00:00
|
|
|
<methodparam choice="opt"><type>int</type><parameter>mode</parameter></methodparam>
|
2002-04-15 00:12:54 +00:00
|
|
|
</methodsynopsis>
|
|
|
|
<para>
|
|
|
|
Returns the number of elements in <parameter>var</parameter>,
|
2005-03-21 09:47:52 +00:00
|
|
|
which is typically an <type>array</type>, since anything else
|
2004-11-02 23:41:00 +00:00
|
|
|
will have one element.
|
2004-11-01 21:11:40 +00:00
|
|
|
</para>
|
|
|
|
<para>
|
2005-03-20 10:16:34 +00:00
|
|
|
For objects, if you have
|
2004-11-02 23:41:00 +00:00
|
|
|
<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.
|
2002-04-15 00:12:54 +00:00
|
|
|
</para>
|
|
|
|
<para>
|
2005-03-20 10:16:34 +00:00
|
|
|
If <parameter>var</parameter> is not an array or an object with
|
|
|
|
implemented <literal>Countable</literal> interface,
|
2004-11-02 23:41:00 +00:00
|
|
|
<literal>1</literal> will be returned.
|
|
|
|
There is one exception, if <parameter>var</parameter> is &null;,
|
|
|
|
<literal>0</literal> will be returned.
|
2002-04-15 00:12:54 +00:00
|
|
|
</para>
|
2003-07-20 16:59:16 +00:00
|
|
|
<note>
|
|
|
|
<simpara>
|
|
|
|
The optional <parameter>mode</parameter> parameter is available as of
|
|
|
|
PHP 4.2.0.
|
|
|
|
</simpara>
|
|
|
|
</note>
|
2003-07-19 06:51:26 +00:00
|
|
|
<para>
|
2003-07-20 16:59:16 +00:00
|
|
|
If the optional <parameter>mode</parameter> parameter is set to
|
|
|
|
<constant>COUNT_RECURSIVE</constant> (or 1), <function>count</function>
|
2003-12-15 18:42:07 +00:00
|
|
|
will recursively count the array. This is particularly useful for
|
2003-07-20 16:59:16 +00:00
|
|
|
counting all the elements of a multidimensional array. The default
|
|
|
|
value for <parameter>mode</parameter> is <literal>0</literal>.
|
2004-09-06 20:13:42 +00:00
|
|
|
<function>count</function> does not detect infinite recursion.
|
2003-07-19 06:51:26 +00:00
|
|
|
</para>
|
2003-07-20 16:59:16 +00:00
|
|
|
<caution>
|
2002-04-15 00:12:54 +00:00
|
|
|
<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>
|
2003-07-20 16:59:16 +00:00
|
|
|
</caution>
|
2002-04-15 00:12:54 +00:00
|
|
|
<para>
|
2004-11-02 23:41:00 +00:00
|
|
|
Please see the <link linkend="language.types.array">Array</link>
|
2002-04-15 00:12:54 +00:00
|
|
|
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[
|
2003-05-30 18:12:53 +00:00
|
|
|
<?php
|
2002-04-15 00:12:54 +00:00
|
|
|
$a[0] = 1;
|
|
|
|
$a[1] = 3;
|
|
|
|
$a[2] = 5;
|
2003-08-17 12:21:03 +00:00
|
|
|
$result = count($a);
|
2002-04-15 00:12:54 +00:00
|
|
|
// $result == 3
|
|
|
|
|
2003-08-17 12:21:03 +00:00
|
|
|
$b[0] = 7;
|
|
|
|
$b[5] = 9;
|
2002-04-15 00:12:54 +00:00
|
|
|
$b[10] = 11;
|
2003-08-17 12:21:03 +00:00
|
|
|
$result = count($b);
|
2005-03-20 10:16:34 +00:00
|
|
|
// $result == 3
|
2004-11-02 23:41:00 +00:00
|
|
|
|
|
|
|
$result = count(null);
|
2005-03-20 10:16:34 +00:00
|
|
|
// $result == 0
|
2004-11-02 23:41:00 +00:00
|
|
|
|
|
|
|
$result = count(false);
|
2005-03-20 10:16:34 +00:00
|
|
|
// $result == 1
|
2003-07-19 06:51:26 +00:00
|
|
|
?>
|
|
|
|
]]>
|
|
|
|
</programlisting>
|
|
|
|
</example>
|
|
|
|
</para>
|
|
|
|
<para>
|
|
|
|
<example>
|
|
|
|
<title>
|
2005-03-20 10:16:34 +00:00
|
|
|
Recursive <function>count</function> example (PHP >= 4.2.0)
|
2003-07-19 06:51:26 +00:00
|
|
|
</title>
|
|
|
|
<programlisting role="php">
|
|
|
|
<![CDATA[
|
|
|
|
<?php
|
2003-08-17 12:21:03 +00:00
|
|
|
$food = array('fruits' => array('orange', 'banana', 'apple'),
|
2003-12-15 16:55:22 +00:00
|
|
|
'veggie' => array('carrot', 'collard', 'pea'));
|
2003-07-19 06:51:26 +00:00
|
|
|
|
|
|
|
// recursive count
|
2005-03-20 10:16:34 +00:00
|
|
|
echo count($food, COUNT_RECURSIVE); // output 8
|
2003-07-19 06:51:26 +00:00
|
|
|
|
|
|
|
// normal count
|
2005-03-20 10:16:34 +00:00
|
|
|
echo count($food); // output 2
|
2003-07-19 06:51:26 +00:00
|
|
|
|
2003-05-30 18:12:53 +00:00
|
|
|
?>
|
2002-04-15 00:12:54 +00:00
|
|
|
]]>
|
|
|
|
</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
|
|
|
|
-->
|