PHP计数功能与关联数组

时间:2011-09-28 11:22:03

标签: php count associative-array

有人可以向我解释一下count函数如何与下面的数组一起工作吗?

我的想法是输出4的以下代码,因为那里有4个元素:

$a = array 
(
  "1" => "A",
   1=> "B",
   "C",
   2 =>"D"
);

echo count($a);

3 个答案:

答案 0 :(得分:28)

count完全符合您的预期,例如它counts all the elements in an array (or object)。但是你对包含四个元素的数组的假设是错误的:

  • “1”等于1,因此1 => "B"将覆盖"1" => "A"
  • 因为您定义了1,所以下一个数字索引将为2,例如“C”是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

答案 1 :(得分:7)

您可以使用此示例来了解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

?>

Source

答案 2 :(得分:1)

您创建的数组中只有两个元素,因此返回的数量为2.您正在覆盖元素,以查看数组使用中的内容:

print_r($a);