dismiss Step into the future! Click here to switch to the beta php.net site
downloads | documentation | faq | getting help | mailing lists | licenses | wiki | reporting bugs | php.net sites | conferences | my php.net

search for in the

current> <compact
[edit] Last updated: Fri, 23 Aug 2013

view this page in

count

(PHP 4, PHP 5)

countCount all elements in an array, or something in an object

Description

int count ( mixed $var [, int $mode = COUNT_NORMAL ] )

Counts all elements in an array, or something in an object.

For objects, if you have SPL installed, you can hook into count() by implementing interface Countable. The interface has exactly one method, Countable::count(), which returns the return value for the count() function.

Please see the Array section of the manual for a detailed explanation of how arrays are implemented and used in PHP.

Parameters

var

The array or the object.

mode

If the optional mode parameter is set to COUNT_RECURSIVE (or 1), count() will recursively count the array. This is particularly useful for counting all the elements of a multidimensional array.

Caution

count() can detect recursion to avoid an infinite loop, but will emit an E_WARNING every time it does (in case the array contains itself more than once) and return a count higher than may be expected.

Return Values

Returns the number of elements in var. If var is not an array or not an object with implemented Countable interface, 1 will be returned. There is one exception, if var is NULL, 0 will be returned.

Caution

count() 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 isset() to test if a variable is set.

Changelog

Version Description
4.2.0 The optional mode parameter was added.

Examples

Example #1 count() example

<?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
?>

Example #2 Recursive count() example

<?php
$food 
= array('fruits' => array('orange''banana''apple'),
              
'veggie' => array('carrot''collard''pea'));

// recursive count
echo count($foodCOUNT_RECURSIVE); // output 8

// normal count
echo count($food); // output 2

?>

See Also

  • is_array() - Finds whether a variable is an array
  • isset() - Determine if a variable is set and is not NULL
  • strlen() - Get string length



current> <compact
[edit] Last updated: Fri, 23 Aug 2013
 
add a note add a note User Contributed Notes count - [7 notes]
up
down
13
alexandr at vladykin dot pp dot ru
6 years ago
My function returns the number of elements in array for multidimensional arrays subject to depth of array. (Almost COUNT_RECURSIVE, but you can point on which depth you want to plunge).

<?php
 
function getArrCount ($arr, $depth=1) {
      if (!
is_array($arr) || !$depth) return 0;
        
    
$res=count($arr);
        
      foreach (
$arr as $in_ar)
        
$res+=getArrCount($in_ar, $depth-1);
     
      return
$res;
  }
?>
up
down
9
atoi_monte at hotmail dot com
6 years ago
Please note: While SPL is compiled into PHP by default starting with PHP 5, the Countable interface is not available until 5.1
up
down
4
danny at dannymendel dot com
6 years ago
I actually find the following function more useful when it comes to multidimension arrays when you do not want all levels of the array tree.

// $limit is set to the number of recursions
<?php
function count_recursive ($array, $limit) {
   
$count = 0;
    foreach (
$array as $id => $_array) {
        if (
is_array ($_array) && $limit > 0) {
           
$count += count_recursive ($_array, $limit - 1);
        } else {
           
$count += 1;
        }
    }
    return
$count;
}
?>
up
down
0
semmelbroesel at gmail dot com
11 days ago
I've read this somewhere else before, but experienced it first hand now, so I thought I'd post it here.

While in regular use, count() is pretty fast, this changes rapidly when used in a for loop. Example:

for ($x = 0; $x < count($array); $x++)
{
  // some code here
}

If your array contains a lot of data, this code gets slowed down significantly. Better way to write this:

$arrayCount = count($array);
for ($x = 0; $x < $arrayCount; $x++)
{
  // some code here
}

I didn't think it would make such a difference, but it did in my case - changed 15 seconds load time into 1 second!
up
down
-10
jezdec at email dot cz
4 years ago
Hi there,
there is a simple script with example for counting rows and columns of a two-dimensional array.

<?php
$data
= array(
   
"apples" =>
        array(
"red", "yellow", "pineapples"),
   
"bananas" =>
        array(
"small", "medium", "big"),
   
"vegs" =>
        array(
"potatoes", "carrots", "onions")
);

$rows = count($data,0);
$cols = (count($data,1)/count($data,0))-1;
print
"There are {$rows} rows and {$cols} columns in the table!";
?>
up
down
-14
freefaler at gmail dot com
8 years ago
If you want to count only elements in the second level of 2D arrays.A close to mind note, useful for multidimentional arrays:

<?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

// all the fruits and veggies
echo (count($food,COUNT_RECURSIVE)-count($food,0)); //output 6
?>
up
down
-21
nicolas dot grekas+php at gmail dot com
1 year ago
As of PHP 5.2.6, count() DOES detect infinite recursion.
It triggers a warning when its argument is a recursive array.
add a note add a note

 
show source | credits | sitemap | contact | advertising | mirror sites