Функция подсчета PHP с ассоциативным массивом
кто-нибудь может объяснить мне, как функция count работает с массивами, как показано ниже?
моя мысль будет следующий код для вывода 4, потому что там есть 4 элемента:
$a = array
(
"1" => "A",
1=> "B",
"C",
2 =>"D"
);
echo count($a);
3 ответов
count
работает точно так, как вы ожидали, например, это подсчитывает все элементы массива (или объекта). Но ваше предположение о массиве, содержащем четыре элемента, неверно:
- " 1 " равно 1, поэтому
1 => "B"
перезапишется"1" => "A"
. - поскольку вы определили 1, следующий числовой индекс будет 2, например, "C" -
2 => "C"
- при назначении
2 => "D"
вы переписали "с".
таким образом, Ваш массив будет содержать только 1 => "B"
и 2 => "D"
и поэтому count
дает 2. Вы можете проверить это, выполнив print_r($a)
. Это даст
Array
(
[1] => B
[2] => D
)
перейдите через http://www.php.net/manual/en/language.types.array.php снова.
вы можете использовать этот пример, чтобы понять, как count работает с рекурсивными массивами
<?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);