-2

我有以下数组

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

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

echo count($arr);

而数组$arr有两个元素。

为什么?

4

3 回答 3

2

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

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

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

显示:

array (size=1)
  1 => int 20

所以 :

echo count( $arr );

显示:

1

哪个是对的 。

于 2013-10-09T11:38:00.817 回答
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

于 2013-10-09T11:45:34.993 回答
0

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

这里

于 2013-10-09T11:39:21.817 回答