Parampal Pooni
Parampal Pooni

Reputation: 3108

PHP: Count function with an associative array

How does the count function work with arrays, like the one below?

My thought would be that the following code outputs 4, because there are four elements there:

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

echo count($a);

Upvotes: 17

Views: 39719

Answers (3)

Gordon
Gordon

Reputation: 317177

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 Arrays again.

Upvotes: 33

piddl0r
piddl0r

Reputation: 2449

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

print_r($a);

Upvotes: 0

Sandeep Bansal
Sandeep Bansal

Reputation: 6394

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

Upvotes: 8

Related Questions