PHP - 将int键转换为字符串?

时间:2011-09-27 12:36:30

标签: php arrays key int associative

我前段时间编写了一些大型PHP函数。它们包含一些关联数组。到目前为止,我对这些数组没有任何问题,因为它们包含string和int类型的键(如“brown”和118)。问题是,当键都是int时,它们不会保留,而是转换为0,1等。

有没有办法强制数组保留我给它的键,即使它们都是int?功能非常大,更改它们需要很长时间。

修改

正如Mike B所说,我使用了一个排序函数,它似乎重新索引数组。我使用的是我在这里找到的函数:Sort an Array by keys based on another Array?

这是Erin的第一个,但它没有保留正确的索引。我尝试了Boombastic编辑的版本,效果很好。

感谢您的所有答案!

2 个答案:

答案 0 :(得分:2)

我有@Named的类似问题被转换为整数键,丢失了一个' 0'数字。

写作只是为了在5年后提供答案......

KennyDs的答案可以简化为

$array = ['00'=>'x','11'=>'y']

...但是,正如MikeB评论的那样,KennyDs的回答是错误的,正确的是:

$array = array_map('strval',$array);

或(丑陋的)功能风格,

foreach($array as $key => $val)
  $array[(string) $key] = $val;

(我检查没有直接的方式)。

关于 $array = array_flip( array_map('strval', array_flip($array)) ); var_dump()检查:在解析为数字时将字符串显示为数字(例如var_export()'123'),但是,它不会丢失字符串(! ),示例123

答案 1 :(得分:1)

您还可以查看数组并将所有int转换为字符串吗?

foreach($array as $key => $val){
  $array[$key] = (string)$val;
}

编辑:如果您需要将键设置为int,那么只需确保在填充数组时,在$ key之前添加(int)强制转换。