数组键因为被认为是数字而丢失

lam*_*ade 0 php arrays key array-key

假设存在一个数组:

$array = array(
    '1001' => 'a',
    '1002' => 'b',
    '1003' => 'c',
);
Run Code Online (Sandbox Code Playgroud)

现在让我们说有人想要反转那个数组:

$array = array_reverse($array);
Run Code Online (Sandbox Code Playgroud)

问题是,array_reverse似乎将所有数值转换为整数,然后重置索引:

0 => 'c'  - should be '1003' => 'c'
1 => 'b'  - should be '1002' => 'b'
2 => 'a'  - should be '1001' => 'a'
Run Code Online (Sandbox Code Playgroud)

有人可能也试过这个 - 但没有任何运气(如预期的那样):

$array[(string) $index] = 'a';
Run Code Online (Sandbox Code Playgroud)

你甚至可以在键盘上自己体验一下.

怎么解决这个问题?我是否必须编写自己的映射函数,可以处理此问题还是有其他方法吗?

aar*_*ron 6

你只需要使用以下代码:

array_reverse($array, true)
Run Code Online (Sandbox Code Playgroud)

根据php文档,要保留键,必须将第二个参数设置为 true