首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >PHP中作为数组键的数字字符串

PHP中作为数组键的数字字符串
EN

Stack Overflow用户
提问于 2010-11-05 03:30:13
回答 7查看 89.2K关注 0票数 117

有没有可能使用像"123"这样的数字字符串作为PHP数组中的键,而不将其转换为整数?

代码语言:javascript
复制
$blah = array('123' => 1);
var_dump($blah);

打印

代码语言:javascript
复制
array(1) {
  [123]=>
  int(1)
}

我想要

代码语言:javascript
复制
array(1) {
  ["123"]=>
  int(1)
}
EN

回答 7

Stack Overflow用户

发布于 2011-09-20 05:24:58

如果你需要在php数据结构中使用一个数字键,一个对象就可以了。和对象保持顺序,所以你可以迭代。

代码语言:javascript
复制
$obj = new stdClass();
$key = '3';
$obj->$key = 'abc';
票数 12
EN

Stack Overflow用户

发布于 2013-03-14 23:37:04

我的解决方法是:

代码语言:javascript
复制
$id = 55;
$array = array(
  " $id" => $value
);

空格char (前缀)是一个很好的解决方案,因为保留int转换:

代码语言:javascript
复制
foreach( $array as $key => $value ) {
  echo $key;
}

您将看到55为int。

票数 11
EN

Stack Overflow用户

发布于 2015-03-20 21:16:20

我在尝试合并同时具有字符串键和整型键的数组时遇到了这个问题。很重要的一点是,整数也将作为字符串处理,因为这些是输入字段的名称(如鞋码等)。

当我使用$data = array_merge($data, $extra);时,PHP会对键进行“重新排序”。在尝试进行排序时,整数键(我尝试使用6 - '6'- "6"甚至(string)"6"作为键)从0重命名为n ...如果你仔细想想,在大多数情况下,这是你想要的行为。

您可以通过使用$data = $data + $extra;来解决此问题。非常直截了当,但我一开始并没有想到^^。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4100488

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档