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

PHP-将int键转换为字符串?,php,arrays,key,int,associative,Php,Arrays,Key,Int,Associative,我不久前编写了一些大型PHP函数。它们包含一些关联数组。到目前为止,我对这些数组没有任何问题,因为它们包含string和int类型的键(如“brown”和118)。问题是,当所有键都是int时,它们不会被保留,而是被转换为0、1等 有没有办法强制数组保留我给它的键,即使它们都是int?这些函数非常大,更改它们需要很长时间 编辑 正如Mike B直觉所示,我使用了一个排序函数,它似乎可以对数组重新编制索引。我使用的是我在这里找到的一个函数: 它是第一个,是Erin的,但它没有保留正确的索引。我试过

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

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

编辑

正如Mike B直觉所示,我使用了一个排序函数,它似乎可以对数组重新编制索引。我使用的是我在这里找到的一个函数:

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


谢谢你的回答

也可以遍历数组,将所有int值转换为字符串

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

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

我对转换为整数键的$array=['00'=>'x','11'=>'y']也有类似问题,丢失了一个'0'数字

写作只是为了在5年后给出答案

肯尼德的答案可以简化为:

$array = array_map('strval',$array);
。。。但是,正如MikeB所评论的,KennyDs的答案是错误的,正确的答案是:

foreach($array as $key => $val)
  $array[(string) $key] = $val;
或者以一种(丑陋的)功能性风格

 $array = array_flip( array_map('strval', array_flip($array)) );
(我查过没有直达的方法)



关于通过
var_dump()
var_export()
:在解析为数字时将字符串显示为数字(例如
'123'
as
123
),但是,它没有丢失字符串(!),示例
数组('00'=>'x',11=>'y',)
,我不确定是否理解<代码>数组(5=>foo')创建一个带有整数键5和值foo的数组。它不会强制它从0开始。你在做分类吗?这可能会导致PHP重新索引键。查看代码会有所帮助。他的键是int/string,而不是值。当他完成最后一个阵型时,它已经爆炸了。我看不出这有什么帮助。在编辑之后也添加了一个解决方案:。最好的方法是始终确保在初始填充时正确设置数组中的数据。