使用 PHP 数组通常涉及向字符串或整数键分配值。然而,问题出现了:我们可以使用数字字符串作为数组键,而不用 PHP 将它们转换为整数吗?考虑以下示例:
$blah = array('123' => 1); var_dump($blah);
这里,您可能期望输出为:
array(1) { ["123"]=> int(1) }
其中键“123”表示为字符串。然而,实际的输出是:
array(1) { [123]=> int(1) }
这表明数字字符串 '123' 已被转换为整数键 123。
为什么 PHP 不允许数字字符串键?
根据 PHP手册:
键可以是整数或字符串。如果一个键是整数的标准表示,它将被这样解释(即“8”将被解释为 8,而“08”将被解释为“08”)。
这意味着PHP 将任何数字字符串解释为整数,即使您将其作为字符串引用也是如此。
附录:与 JavaScript 对象的比较键
PHP 中的此行为与 JavaScript 对象键类似但不完全相同。在 JavaScript 中,您可以使用数字字符串作为对象键,它们将保留其字符串形式:
foo = { '10' : 'bar' }; foo['10']; // "bar" foo[10]; // "bar" foo[012]; // "bar" foo['012']; // undefined!
在此示例中,'10' 用作字符串键,而 10 和 012 都被解释作为整数。但是,“012”作为带引号的字符串被视为未定义,这与在 PHP 中被解释为字符串“012”不同。
以上是PHP 数组可以使用数字字符串作为键而不进行整数转换吗?的详细内容。更多信息请关注PHP中文网其他相关文章!