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

标签 php arrays key int associative

<分区>

我有一些前段时间编写的大型 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',).

关于PHP - 将 int 键转换为字符串?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7569215/

相关文章:

php - 无法使用 PHP 从数据库获取正确的字段

javascript - 如何重定向到上一级?

php - 如何检查用户电子邮件是否已经存在

javascript - 将数组存储在本地存储中

python - 沿轴的零垫阵列

java - 通过jSTL在jsp中显示数组值时出错

java - 为什么containsKey没有找到key?

perl - 在 Perl 中,如何按值的频率排序?

PHP::处理搜索中的拼写错误

python pexpect sendcontrol关键字符