Может кто-нибудь объяснить мне, как работает функция подсчета с массивами, подобными приведенным ниже?
Я думаю, что для вывода 4 будет следующий код, потому что там 4 элемента:
$a = array ( "1" => "A", 1=> "B", "C", 2 =>"D" ); echo count($a);
count работает точно так, как вы ожидаете, например, он подсчитывает все элементы в массиве (или объекте) .Но ваше предположение о массиве, содержащем четыре элемента, неверно:
count
1 => "B"
"1" => "A"
2 => "C"
2 => "D"
Таким образом, ваш массив будет содержать только 1 => "B" и 2 => "D", и поэтому count дает 2. Вы можете убедиться в этом, выполнив print_r($a).Это даст
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);