如何使用' +'之前的数组的数字键。符号被转换为整数类型?

时间:2017-12-15 05:47:19

标签: php arrays casting integer key

根据PHP Manual

  

密钥可以是整数或字符串。值可以是任何值   类型。

     

此外还会发生以下关键演员:

     
      
  • 包含有效十进制整数的字符串,除非数字前面带有+号,否则将强制转换为整数类型。例如。钥匙   " 8"实际上将存储在8下。另一方面" 08"将不会   被投,因为它不是有效的十进制整数。
  •   

根据引用我写下面的代码。在下面的代码中,键+8被转换为整数类型。如果上述规则说不应该发生这种情况怎么可能呢?

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

输出

array(1) {
  [8]=>
  string(1) "a"
}

1 个答案:

答案 0 :(得分:0)

因为+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"
}