w3resource

PHP Array Exercises : Sort a multi-dimensional array set by a specific key


23. Sort Multi-Dimensional Array by Specific Key

Write a PHP program to sort a multi-dimensional array set by a specific key.

Sample Solution:

PHP Code:

<?php
// Define a function named 'column_Sort' for sorting a multi-dimensional array based on a specified column
function column_Sort($unsorted, $column) {
    // Create a copy of the unsorted array to be sorted
    $sorted = $unsorted;

    // Iterate through the array using bubble sort algorithm
    for ($i = 0; $i < sizeof($sorted) - 1; $i++) {
        for ($j = 0; $j < sizeof($sorted) - 1 - $i; $j++) {
            // Compare values in the specified column and swap if necessary
            if ($sorted[$j][$column] > $sorted[$j + 1][$column]) {
                $tmp = $sorted[$j];
                $sorted[$j] = $sorted[$j + 1];
                $sorted[$j + 1] = $tmp;
            }
        }
    }

    // Return the sorted array
    return $sorted;
}

// Initialize a multi-dimensional array $my_array with sample data
$my_array = array();
$my_array[0]['name'] = 'Sana';
$my_array[0]['email'] = '[email protected]';
$my_array[0]['phone'] = '111-111-1234';
$my_array[0]['country'] = 'USA';

$my_array[1]['name'] = 'Robin';
$my_array[1]['email'] = '[email protected]';
$my_array[1]['phone'] = '222-222-1235';
$my_array[1]['country'] = 'UK';

$my_array[2]['name'] = 'Sofia';
$my_array[2]['email'] = '[email protected]';
$my_array[2]['phone'] = '333-333-1236';
$my_array[2]['country'] = 'India';

// Print the sorted array based on the 'name' column
print_r(column_Sort($my_array, 'name'));
?>

Output:

Array                                                       
(                                                           
    [0] => Array                                            
        (                                                   
            [name] => Robin                                 
            [email] => [email protected]                    
            [phone] => 222-222-1235                         
            [country] => UK                                 
        )                                                   
                                                            
    [1] => Array                                            
        (                                                   
            [name] => Sana                                  
            [email] => [email protected]                     
            [phone] => 111-111-1234                         
            [country] => USA                                
        )                                                   
                                                            
    [2] => Array                                            
        (                                                   
            [name] => Sofia                                 
            [email] => [email protected]                    
            [phone] => 333-333-1236                         
            [country] => India                              
        )                                                   
                                                            
)

Flowchart:

Flowchart: PHP - Sort the following array by the day and user name

For more Practice: Solve these Related Problems:

  • Write a PHP function to sort a two-dimensional array by a specified key using array_multisort.
  • Write a PHP script to dynamically sort a multi-dimensional array on different keys based on user input.
  • Write a PHP program to sort an array of associative arrays by a particular key and output the sorted array.
  • Write a PHP script to implement custom sorting on a multi-dimensional array using usort() with a callback that compares a specific key.

Go to:


PREV : Sort Array by Day and Username.
NEXT : Case-Insensitive Natural Order Sorting.

PHP Code Editor:



Contribute your code and comments through Disqus.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.



Follow us on Facebook and Twitter for latest update.