猿问

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

是否可以"123"在PHP数组中使用数字字符串作为键,而无需将其转换为整数?


$blah = array('123' => 1);

var_dump($blah);

版画


array(1) {

  [123]=>

  int(1)

}

我想要


array(1) {

  ["123"]=>

  int(1)

}


饮歌长啸
浏览 867回答 3
3回答

慕码人2483693

没有; 不,这不对:从手册:键可以是整数或字符串。如果键是整数的标准表示,它将被解释为整数(即“ 8”将被解释为8,而“ 08”将被解释为“ 08”)。附录由于下面的评论,我认为指出该行为与 JavaScript对象键相似但不相同很有趣。foo = { '10' : 'bar' };foo['10']; // "bar"foo[10]; // "bar"foo[012]; // "bar"foo['012']; // undefined!

阿晨1998

是的,可以通过数组广播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

绝地无双

我的解决方法是:$id = 55;$array = array(  " $id" => $value);空格字符(前置)是一个很好的解决方案,因为保持int转换:foreach( $array as $key => $value ) {  echo $key;}您会看到55为int。
随时随地看视频慕课网APP
我要回答