我得到了奇怪的输出
<?php
$a = array('1000'=>1,2,3,4,'1001'=>5);
var_dump(array_reverse($a));
?>
我正在得到这样的输出:
array (size=4)
0 => int 4
1 => int 3
2 => int 5
3 => int 1
缺少值2。任何人都可以解释一下代码吗?
答案 0 :(得分:3)
$a = array('1000'=>1,2,3,4,'1001'=>5);
表示
create key entry 1000 with value 1
create key entry 1000+1 with value 2
create key entry 1000+2 with value 3
create key entry 1000+3 with value 4
然后
create key entry 1001 with value 5
已存在(值为2), 已覆盖 的新值
答案 1 :(得分:2)
您的原始阵列已经存在“问题”。如果您print_r($a);
,您会看到:
Array
(
[1000] => 1
[1001] => 5
[1002] => 3
[1003] => 4
)
你可以看到你遗漏了一个值,因为你覆盖了它:
Index 1000 set value 1.
Index 1001 set value 2.
Index 1002 set value 3.
Index 1003 set value 4.
Index 1001 set value 5. <--- overwritten index 1001
答案 2 :(得分:1)
您的代码工作正常,您使用index(1000)启动第一个值,告诉PHP设置以下键,例如,如果我们打印您的数组,它将是这样的:
Array
(
[1000] => 1
[1001] => 5
[1002] => 3
[1003] => 4
)
和数组反向产生这个:
Array
(
[0] => 4
[1] => 3
[2] => 5
[3] => 1
)
使用第二个参数保存键:
print_r(array_reverse($a,true));
Array
(
[1003] => 4
[1002] => 3
[1001] => 5
[1000] => 1
)
答案 3 :(得分:0)
当然,价值2缺失。看看这个
$a = array('1000'=>1,2,3,4,'1001'=>5);
由于值1之后的下一个值没有键,所以默认值是值1的下一个键。所以它应该是这样的 阵列( '1000'=大于1, '1001'=大于2, '1002'=→3, '1003'= 1→4) 并且最后一个值是5,其已经具有密钥1001.因此它将覆盖先前的值。结果值2被值5覆盖