代码之家  ›  专栏  ›  技术社区  ›  user9059272

如何将前面带“+”号的数组的数字键转换为整数类型?

  •  2
  • user9059272  · 技术社区  · 7 年前

    根据 PHP Manual

    键可以是整数或字符串。该值可以是任何 类型

    此外,还将进行以下关键点转换:

    • 除非数字前面有加号,否则包含有效十进制整数的字符串将转换为整数类型。E、 g.钥匙 “8”实际上将存储在8下。另一方面,“08”不会 强制转换,因为它不是有效的十进制整数。

    根据about quotes,我编写了以下代码。在下面的代码中,键+8被转换为整数类型。按照上述规则,这怎么可能不发生?

    <?php
    $array = array(
        +8    => "a"
    );
    var_dump($array);
    ?>
    

    输出:

    array(1) {
      [8]=>
      string(1) "a"
    }
    
    1 回复  |  直到 7 年前
        1
  •  0
  •   Álvaro González    7 年前

    因为 +8 是整数文本,因此+符号是隐式的,添加与否没有区别:

    var_dump(+8, 8);
    
    int(8)
    int(8)
    

    文档中没有说明PHP会将整数转换为字符串。我想你只是误读了这句话(强调我的):

    包含有效的十进制整数,除非数字前面有+号

    $array = array(
        7 => 'a',
        +8 => 'b',
        '+9' => 'c',
    );
    var_dump(array_keys($array));
    
    array(3) {
      [0]=>
      int(7)
      [1]=>
      int(8)
      [2]=>
      string(2) "+9"
    }