我有一些前段时间编写的大型 PHP 函数。它们包含一些关联数组。到目前为止,我对这些数组没有任何问题,因为它们包含字符串和整数类型的键(如“brown”和 118)。问题是,当键都是 int 时,它们不会被保留,而是被转换为 0、1 等。
有没有办法强制数组保留我给它的键,即使它们都是整型的?功能非常多,更改它们需要很长时间。
编辑
正如 Mike B 的直觉,我使用了一个似乎重新索引数组的排序函数。我正在使用在这里找到的函数:Sort an Array by keys based on another Array?
这是第一个,Erin 的那个,但它没有保留正确的索引。我试过 Boombastic 编辑的版本,效果很好。
感谢您的所有回答!
我对 $array = ['00'=>'x','11'=>'y']
有类似的问题,它被转换为整数键,丢失了一个“0”数字.
写作只是为了在 5 年后提供答案......
KennyDs 的答案可以简化为,
$array = array_map('strval',$array);
...但是,正如 MikeB 评论的那样,KennyD 的答案是错误的,正确的是:
foreach($array as $key => $val)
$array[(string) $key] = $val;
或以(丑陋的)功能风格,
$array = array_flip( array_map('strval', array_flip($array)) );
(我查过没有直接的方法)。
关于通过 var_dump()
或 var_export()
进行检查:当解析为数字时将字符串显示为数字(例如,'123'
为123
), 但是,它没有丢失字符串 (!),示例 array ( '00' => 'x', 11 => 'y',)
.