Php 交互模式下的var_dump显示意外结果

Php 交互模式下的var_dump显示意外结果,php,Php,我在我的shell(ubuntu 12)上遇到了一个奇怪的行为,我无法解释: 变量转储(数组(1.5=>“a”,2.2=>“b”,2.5=>“c”) 在我的shell中打印以下内容: array(2) { [1]=> string(1) "a" [2]=> string(1) "c" } 有人能解释一下吗?“b”怎么了?为什么不打印? (PHP 5.3)这里发生了两件事: 数组键只能是字符串或整数。浮点数将转换为整数 如果数组声明中的多个元素使用同一

我在我的shell(ubuntu 12)上遇到了一个奇怪的行为,我无法解释:

变量转储(数组(1.5=>“a”,2.2=>“b”,2.5=>“c”)

在我的shell中打印以下内容:

array(2) {
    [1]=>
    string(1) "a"
    [2]=>
    string(1) "c"
}
有人能解释一下吗?“b”怎么了?为什么不打印?
(PHP 5.3)

这里发生了两件事:

  • 数组键只能是字符串或整数。浮点数将转换为整数
  • 如果数组声明中的多个元素使用同一个键,则仅使用最后一个,因为所有其他元素都将被覆盖
  • 因此,您的
    2.2
    2.5
    键被转换为整数
    2
    。第二本书比第一本书写得多


    一种选择是使用字符串键:

    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"
    }
    

    这里发生了两件事:

  • 数组键只能是字符串或整数。浮点数将转换为整数
  • 如果数组声明中的多个元素使用同一个键,则仅使用最后一个,因为所有其他元素都将被覆盖
  • 因此,您的
    2.2
    2.5
    键被转换为整数
    2
    。第二本书比第一本书写得多


    一种选择是使用字符串键:

    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"
    }
    

    键入强制转换和覆盖示例

    <?php
    $array = array(
        1    => "a",
        2.2  => "b",
        2.5  => "c",
    );
    var_dump($array);
    ?>
    
    如上例所示,将
    2.2
    2.5
    转换为
    2
    ,每个新元素上的值将被
    覆盖
    ,最后分配的值“c”是唯一剩下的值


    有关详细信息,请单击

    键入强制转换和覆盖示例

    <?php
    $array = array(
        1    => "a",
        2.2  => "b",
        2.5  => "c",
    );
    var_dump($array);
    ?>
    
    如上例所示,将
    2.2
    2.5
    转换为
    2
    ,每个新元素上的值将被
    覆盖
    ,最后分配的值“c”是唯一剩下的值


    有关更多信息,请单击

    手册可以:
    2.2
    被视为2。并且,
    2.5
    也被视为2。在这种情况下,
    2.5
    覆盖
    2.2
    ,因为两个值都是2。手册可以:
    2.2
    被视为2。并且,
    2.5
    也被视为2。在这种情况下,
    2.5
    覆盖
    2.2
    ,因为两个值都是2。