我前段时间编写了一些大型PHP函数。它们包含一些关联数组。到目前为止,我对这些数组没有任何问题,因为它们包含string和int类型的键(如“brown”和118)。问题是,当键都是int时,它们不会保留,而是转换为0,1等。
有没有办法强制数组保留我给它的键,即使它们都是int?功能非常大,更改它们需要很长时间。
修改
正如Mike B所说,我使用了一个排序函数,它似乎重新索引数组。我使用的是我在这里找到的函数:Sort an Array by keys based on another Array?
这是Erin的第一个,但它没有保留正确的索引。我尝试了Boombastic编辑的版本,效果很好。
感谢您的所有答案!
答案 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)强制转换。