echo count(array("1" => "A", 1 => "B", "C", 2 => "D"));
这会输出 2。我玩过它,并注意到当用作数组中的键时,PHP 识别字符串数字和整数时相同。似乎整数优先。此外,当我对数组进行 var_dump 时,仅显示包含值“B”和“D”的元素。我明白为什么没有显示“A”,但为什么 var_dump 中没有“C”?
echo count(array("1" => "A", 1 => "B", "C", 2 => "D"));
这会输出 2。我玩过它,并注意到当用作数组中的键时,PHP 识别字符串数字和整数时相同。似乎整数优先。此外,当我对数组进行 var_dump 时,仅显示包含值“B”和“D”的元素。我明白为什么没有显示“A”,但为什么 var_dump 中没有“C”?
您的阵列基本上是按如下方式构建的:
Key "1" is an integer-like string, treat as integer 1
Assign "A" to key 1
Assign "B" to key 1 (overwrite "A")
No explicit key, take greatest key so far and add 1 = 2
Assign "C" to key 2
Assign "D" to key 2 (overwrite "C")
因此,您得到的数组是array(1=>"B",2=>"D");
似乎您不能将关联数组和非关联数组混合在一起。如果您C
像对其他所有内容一样添加索引,它会按预期工作。至于字符串,如果它们是有效的整数,那么它将被转换为 int arrays。
$arr = array("0" => "A", 1 => "B", 2 => "C", 3 => "D");
// However, if you do:
$array = array(
"0" => "A",
1 => "B",
"2" => array(1, 2, 3)
);
它的出现就像你期望的那样var_dump array(3) { [0]=> string(1) "A" [1]=> string(1) "B" [2]=> array(3) { [0]=> int(1) [1]=> int(2) [2]=> int(3) } }