How to assign new numerical keys to an array and sort based on the original keys? [duplicate]
I have an array with numerical indices, which looks like this (after I unset some elements):
$array = [
23 => 'banana',
3 => 'apple',
5 => 'pear',
];
Which function do I use to reorder开发者_如何学JAVA them based on their key order to:
$array = [
0 => 'apple',
1 => 'pear',
2 => 'banana',
];
I tried some of the sort functions but none of them provided the output I need.
If you want to sort the array by key value use ksort()
:
ksort($array);
print_r($array);
Output:
Array
(
[3] => apple
[5] => pear
[23] => banana
)
That will preserve the keys however. To reassign keys for an array from 0 onwards use array_values()
on the result:
ksort($array);
$array_with_new_keys = array_values($array); // sorted by original key order
print_r($array_with_new_keys);
Output:
Array
(
[0] => apple
[1] => pear
[2] => banana
)
ksort() will sort by key, then get the values with array_values() and that will create a new array with keys from 0
to n-1
.
ksort($array)
$array = array_values( $array );
Of course, you don't need ksort if it's already sorted by key. You might as well use array_values() directly.
$arrayOne = array('one','two','three'); //You set an array with certain elements
unset($array[1]); //You unset one or more elements.
$arrayTwo = array_values($arrayOnw); //You reindex the array into a new one.
print_r($arrayTwo); //Print for prove.
The print_r
results are:
Array ( [0] => one [1] => three )
精彩评论