PHP 中作为数组键的数字字符串
2022-08-30 07:12:23
是否可以使用数字字符串作为PHP数组中的键,而不会将其转换为整数?"123"
$blah = array('123' => 1);
var_dump($blah);
指纹
array(1) {
[123]=>
int(1)
}
我想要
array(1) {
["123"]=>
int(1)
}
是否可以使用数字字符串作为PHP数组中的键,而不会将其转换为整数?"123"
$blah = array('123' => 1);
var_dump($blah);
指纹
array(1) {
[123]=>
int(1)
}
我想要
array(1) {
["123"]=>
int(1)
}
否;不,它不是:
从手册中:
键可以是整数或字符串。如果一个键是整数的标准表示形式,它将被解释为整数(即“8”将被解释为8,而“08”将被解释为“08”)。
补遗
由于下面的评论,我认为指出该行为与JavaScript对象键相似但不完全相同会很有趣。
foo = { '10' : 'bar' };
foo['10']; // "bar"
foo[10]; // "bar"
foo[012]; // "bar"
foo['012']; // undefined!
是的,可以通过数组转换对象来实现:stdClass
$data = new stdClass;
$data->{"12"} = 37;
$data = (array) $data;
var_dump( $data );
这给你(直到PHP版本7.1):
array(1) {
["12"]=>
int(37)
}
(更新:我原来的答案显示使用更复杂的方式,这是不必要的。json_decode()
json_encode()
请注意注释:很遗憾,无法直接引用值:将导致通知。$data['12']
更新:
从 PHP 7.2 开始,也可以使用数字字符串作为键来引用值:
var_dump( $data['12'] ); // int 32