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