Функция PHP Count с ассоциативным массивом

Может ли кто-нибудь объяснить мне, как функция count работает с массивами, подобными приведенной ниже?

Моей мыслью был бы следующий код для вывода 4, потому что там есть 4 элемента:

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

Related of "Функция PHP Count с ассоциативным массивом"

count работает точно так, как вы ожидали, например, он подсчитывает все элементы в массиве (или объекте) . Но ваше предположение о массиве, содержащем четыре элемента, неверно:

  • «1» равно 1, поэтому 1 => "B" перезапишет "1" => "A" .
  • потому что вы определили 1, следующий числовой индекс будет равен 2, например, «C» равен 2 => "C"
  • когда вы назначили 2 => "D" вы перезаписали «C».

Таким образом, ваш массив будет содержать только 1 => "B" и 2 => "D" и именно поэтому count дает 2. Вы можете проверить, что это верно, делая print_r($a) . Это даст

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

Повторите попытку через http://www.php.net/manual/en/language.types.array.php .

Вы можете использовать этот пример, чтобы понять, как счетчик работает с рекурсивными массивами

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

Источник

Массив, который вы создали, имеет только два элемента, поэтому возвращаемое число 2. Вы переписываете элементы, чтобы увидеть, что в вашем массиве используется:

 print_r($a);