Может ли кто-нибудь объяснить мне, как функция 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);