3 回答
TA贡献1860条经验 获得超9个赞
没有; 不,这不对:
从手册:
键可以是整数或字符串。如果键是整数的标准表示,它将被解释为整数(即“ 8”将被解释为8,而“ 08”将被解释为“ 08”)。
附录
由于下面的评论,我认为指出该行为与 JavaScript对象键相似但不相同很有趣。
foo = { '10' : 'bar' };
foo['10']; // "bar"
foo[10]; // "bar"
foo[012]; // "bar"
foo['012']; // undefined!
TA贡献2037条经验 获得超6个赞
是的,可以通过数组广播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
TA贡献1946条经验 获得超4个赞
我的解决方法是:
$id = 55;
$array = array(
" $id" => $value
);
空格字符(前置)是一个很好的解决方案,因为保持int转换:
foreach( $array as $key => $value ) {
echo $key;
}
您会看到55为int。
- 3 回答
- 0 关注
- 866 浏览
添加回答
举报