Array count()的奇怪行为

时间:2013-10-09 11:32:04

标签: php arrays

我有以下数组

$arr = array(1 => 1, "1" => 50);

当我对它执行count()时,它给出了奇怪的答案:1

echo count($arr);

而数组$arr有两个元素。

为什么?

3 个答案:

答案 0 :(得分:2)

这是由于类型转换。检查Arrays中的示例#2类型转换和覆盖示例。

  

如果数组声明中的多个元素使用相同的键,则只会使用最后一个元素,因为所有其他元素都会被覆盖。

$arr = array(1 => 10, "1" => 20);
var_dump( $arr );

显示:

array (size=1)
  1 => int 20

所以:

echo count( $arr );

显示:

1

哪个是正确的。

答案 1 :(得分:1)

如果数组声明中的多个元素使用相同的键,则只使用最后一个元素,因为所有其他元素都被覆盖。由于以下示例中的所有键都被强制转换为1,因此每个新元素都将覆盖该值

示例代码:

$array = array(
    1    => "a",
    "1"  => "b"

);
var_dump($array);
echo count($array);

示例输出:

array(1) {
  [1]=>
  string(1) "b"
}
1

详情请看:http://nz1.php.net/manual/en/language.types.array.php

答案 2 :(得分:0)

如果你将“1”更改为“2”它会计数2.问题是你选择数组中的第一个元素为1然后你选择它为50,所以在最后,数组将有一个元素,即50。

here