嗨,我有一个PHP数组
$arr = array(10,2,3,0=>4,5,6);
echo "<pre>";
var_dump($arr);
我的预期结果是
<pre>array(6) {
[0]=>
int(4)
[1]=>
int(10)
[2]=>
int(2)
[3]=>
int(3)
[4]=>
int(5)
[5]=>
int(6)
}
但我的结果是
<pre>array(5) {
[0]=>
int(4)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(5)
[4]=>
int(6)
}
从文档中说出
http://php.net/manual/en/language.types.array.php
示例#5不在所有元素上关键
<?php
$array = array(
"a",
"b",
6 => "c",
"d",
);
var_dump($array);
?>
array(4) {
[0]=>
string(1) "a"
[1]=>
string(1) "b"
[6]=>
string(1) "c"
[7]=>
string(1) "d"
}
**这里我可以理解没有其他元素有密钥6。在我的情况下,我认为因为第一个元素也有键0。它被删除了。
但是因为我们已经将键0添加到外部的另一个元素,我觉得10应该有键1。请解释一下。非常感谢你。
答案 0 :(得分:2)
您引用的示例不与您的实际用例相匹配。在其中,您明确设置了尚未定义的数组键 。在您的示例中,您正在定义已定义的数组键 。因此,在您的情况下,您将使用稍后在数组声明中设置的新值覆盖原始值。
答案 1 :(得分:1)
我认为您问题的答案在该页面的示例2中。
<?php
$array = array(
1 => "a",
"1" => "b",
1.5 => "c",
true => "d",
);
var_dump($array);
?>
以上示例将输出:
array(1) {
[1]=>
string(1) "d"
}
即。数组创建中的后续条目将覆盖先前的条目。因为在数组中你创建了第一个元素&#34; 10&#34;被赋予密钥0,后面的条目0 =&gt; 4将其覆盖。因此,您所看到的是PHP中数组创建的预期结果。
答案 2 :(得分:0)
这里的问题是,您正在定义已分配给值的键的值。让我解释一下。
当PHP解释器遍历数组时,它会分配
[0] -> 10
[1] -> 2
[2] -> 3
然后它会看到[0] -> 4
,
所以它用[0] -> 10
替换[0] -> 4
所以... ..
[3] -> 5
[4] -> 6
希望你能理解。