Sort an Associative Array by Key in PHP
Last Updated :
02 May, 2024
Given an Associative Array, the task is to sort the associative array by its keys in PHP.
There are different methods to sort Associative Array by keys, these are described below:
Using ksort() Function
The ksort() function sorts an associative array by its keys in ascending order. It sorts in a way that the relationship between the indices and values is maintained.
Example: This example shows the use of ksort() function.
PHP
<?php
$subjects = array(
"Maths" => 95,
"Physics" => 90,
"Chemistry" => 96,
"English" => 93,
"Computer" => 98
);
ksort($subjects);
foreach ($subjects as $key => $value) {
echo "$key => $value\n";
}
?>
OutputChemistry => 96
Computer => 98
English => 93
Maths => 95
Physics => 90
Using uksort() Function
The uksort() function allows you to sort an associative array by keys using a custom comparison function.
Example: This example shows the use of uksort() function.
PHP
<?php
$subjects = array(
"Maths" => 95,
"Physics" => 90,
"Chemistry" => 96,
"English" => 93,
"Computer" => 98
);
uksort($subjects, function($a, $b) {
return strcmp($a, $b);
});
foreach ($subjects as $key => $value) {
echo "$key => $value\n";
}
?>
OutputChemistry => 96
Computer => 98
English => 93
Maths => 95
Physics => 90
Converting to a Regular Array for Sorting
You can convert the associative array to a regular array for sorting, then convert it back to an associative array. Converting the associative array to a regular array for sorting involves extracting the keys using array_keys(), sorting them using sort(), and then reconstructing the associative array using a loop.
Example: This example shows the sorting of an array by converting it to the regular array.
PHP
<?php
$subjects = array(
"Maths" => 95,
"Physics" => 90,
"Chemistry" => 96,
"English" => 93,
"Computer" => 98
);
$keys = array_keys($subjects);
sort($keys);
$sorted_subjects = array();
foreach ($keys as $key) {
$sorted_subjects[$key] = $subjects[$key];
}
foreach ($sorted_subjects as $key => $value) {
echo "$key => $value\n";
}
?>
OutputChemistry => 96
Computer => 98
English => 93
Maths => 95
Physics => 90
Share your thoughts in the comments
Please Login to comment...