Функция подсчета 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);