Question

Let's say there exists an array:

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

Now let's say someone wants reverse that array:

$array = array_reverse($array);

The problem is, that array_reverse seems to cast all numeric values to integers and then resets the indexes:

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

What someone may have also tried was this - but without any luck (as expected):

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

You can even experience this yourself here on codepad.

How can this be solved? Do I have to write my own mapping function, which can handle this or is there any other way?

Was it helpful?

Solution

you just need to use the following code:

array_reverse($array, true)

As per php documentation, to preserve keys you must set 2nd parameter to true

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top