我有以下数组
$arr = array(1 => 1, "1" => 50);
当我对它执行count()时,它给出了奇怪的答案:1
echo count($arr);
而数组$arr
有两个元素。
为什么?
答案 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
答案 2 :(得分:0)
如果你将“1”更改为“2”它会计数2.问题是你选择数组中的第一个元素为1然后你选择它为50,所以在最后,数组将有一个元素,即50。
见here!