Open In App

Sort an Associative Array by Key in PHP

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
$subjects = array(
    "Maths" => 95, 
    "Physics" => 90,   
    "Chemistry" => 96, 
    "English" => 93,   
    "Computer" => 98
);

ksort($subjects);

foreach ($subjects as $key => $value) {
    echo "$key => $value\n";
}
?>

Output
Chemistry => 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

$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";
}

?>

Output
Chemistry => 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
$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";
}
?>

Output
Chemistry => 96
Computer => 98
English => 93
Maths => 95
Physics => 90
Article Tags :