我有以下数组
$arr = array(1 => 1, "1" => 50);
当我对其执行 count() 时,它给了我奇怪的答案:1
echo count($arr);
而数组$arr
有两个元素。
为什么?
这是由于类型转换。检查示例 #2数组中的类型转换和覆盖示例。
如果数组声明中的多个元素使用相同的键,则仅使用最后一个,因为所有其他元素都将被覆盖。
$arr = array(1 => 10, "1" => 20);
var_dump( $arr );
显示:
array (size=1)
1 => int 20
所以 :
echo count( $arr );
显示:
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
如果您将“1”更改为“2”,它将计为 2。问题是您选择数组中的第一个元素为 1,然后您选择它为 50,所以在最后,数组将有一个元素,即 50。
看这里!