数组键会丢失,因为它们被认为是数字


Array keys get lost as they are considered numeric

假设存在一个数组:

$array = array(
    '1001' => 'a',
    '1002' => 'b',
    '1003' => 'c',
);

现在假设有人想要反转该数组:

$array = array_reverse($array);

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

0 => 'c'  - should be '1003' => 'c'
1 => 'b'  - should be '1002' => 'b'
2 => 'a'  - should be '1001' => 'a'

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

$array[(string) $index] = 'a';

您甚至可以在代码板上亲自体验。

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

你只需要使用以下代码:

array_reverse($array, true)

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