为了账号安全,请及时绑定邮箱和手机立即绑定

一个数字字符串作为PHP中的数组键

一个数字字符串作为PHP中的数组键

PHP
饮歌长啸 2019-10-10 16:29:40
是否可以"123"在PHP数组中使用数字字符串作为键,而无需将其转换为整数?$blah = array('123' => 1);var_dump($blah);版画array(1) {  [123]=>  int(1)}我想要array(1) {  ["123"]=>  int(1)}
查看完整描述

3 回答

?
慕码人2483693

TA贡献1860条经验 获得超9个赞

没有; 不,这不对:


从手册:


键可以是整数或字符串。如果键是整数的标准表示,它将被解释为整数(即“ 8”将被解释为8,而“ 08”将被解释为“ 08”)。


附录


由于下面的评论,我认为指出该行为与 JavaScript对象键相似但不相同很有趣。


foo = { '10' : 'bar' };


foo['10']; // "bar"

foo[10]; // "bar"

foo[012]; // "bar"

foo['012']; // undefined!


查看完整回答
反对 回复 2019-10-10
?
阿晨1998

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


查看完整回答
反对 回复 2019-10-10
?
绝地无双

TA贡献1946条经验 获得超4个赞

我的解决方法是:


$id = 55;

$array = array(

  " $id" => $value

);

空格字符(前置)是一个很好的解决方案,因为保持int转换:


foreach( $array as $key => $value ) {

  echo $key;

}

您会看到55为int。


查看完整回答
反对 回复 2019-10-10
  • 3 回答
  • 0 关注
  • 866 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信