15

Could someone please explain to me how the count function works with arrays like the one below?

My thought would be the following code to output 4, cause there are 4 elements there:

$a = array 
(
  "1" => "A",
   1=> "B",
   "C",
   2 =>"D"
);

echo count($a);
Alexander Farber
  • 21,519
  • 75
  • 241
  • 416
Parampal Pooni
  • 2,958
  • 8
  • 34
  • 40

3 Answers3

31

count works exactly as you would expect, e.g. it counts all the elements in an array (or object). But your assumption about the array containing four elements is wrong:

  • "1" is equal to 1, so 1 => "B" will overwrite "1" => "A".
  • because you defined 1, the next numeric index will be 2, e.g. "C" is 2 => "C"
  • when you assigned 2 => "D" you overwrote "C".

So your array will only contain 1 => "B" and 2 => "D" and that's why count gives 2. You can verify this is true by doing print_r($a). This will give

Array
(
    [1] => B
    [2] => D
)

Please go through http://www.php.net/manual/en/language.types.array.php again.

Gordon
  • 312,688
  • 75
  • 539
  • 559
8

You can use this example to understand how count works with recursive 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

?>

Source

Sandeep Bansal
  • 6,280
  • 17
  • 84
  • 126
0

The array you have created only has two elements in it hence the count returning 2. You are overwriting elements, to see whats in your array use :

print_r($a);
piddl0r
  • 2,431
  • 2
  • 23
  • 35