我在我的shell(ubuntu 12)上遇到了一种奇怪的行为,我无法解释:
var_dump(array(1.5 =>" a",2.2 =>" b",2.5 =>" c"));
在我的shell中打印以下内容:
array(2) {
[1]=>
string(1) "a"
[2]=>
string(1) "c"
}
有人可以解释一下吗?怎么了" b"?为什么不打印? (PHP 5.3)
答案 0 :(得分:6)
这里有两件事:
因此,您的2.2
和2.5
键被转换为整数2
。第二个覆盖了第一个。
http://php.net/manual/en/language.types.array.php#example-99
一种选择是使用字符串键:
var_dump(array("1.5" => "a", "2.2" => "b", "2.5" => "c"));
array(3) {
'1.5' =>
string(1) "a"
'2.2' =>
string(1) "b"
'2.5' =>
string(1) "c"
}
答案 1 :(得分:0)
输入转换和覆盖示例
<?php
$array = array(
1 => "a",
2.2 => "b",
2.5 => "c",
);
var_dump($array);
?>
以上示例将输出:
array(2) {
[1]=>
string(1) "a"
[2]=>
string(1) "c"
}
如上例2.2
&amp; 2.5
投放到2
,每个新元素的值为overwritten
,最后一个值为#34; c&#34;是剩下的唯一一个。