w3resource

PHP Array Exercises : Sort an array according to another array as a priority list


20. Sort Array by Priority List

Write a PHP function to sort an array according to another array acting as a priority list.

Sample Solution:

PHP Code:

<?php
// Define a function named 'list_cmp' that compares two values based on their order in the global array '$order'
function list_cmp($a, $b)
{
    global $order;

    // Iterate through the '$order' array
    foreach ($order as $key => $value)
    {
        // If $a matches a value in '$order', return 0 to indicate equality
        if ($a == $value)
        {
            return 0;
            break;
        }

        // If $b matches a value in '$order', return 1 to indicate inequality
        if ($b == $value)
        {
            return 1;
            break;
        }
    }
}

// Define an array '$order' specifying the desired order of values
$order[0] = 1;
$order[1] = 3;
$order[2] = 4;
$order[3] = 2;

// Define an array '$array' with unsorted values
$array[0] = 2;
$array[1] = 1;
$array[2] = 3;
$array[3] = 4;
$array[4] = 2;
$array[5] = 1;
$array[6] = 2;

// Use 'usort' function to sort '$array' based on the order specified in the 'list_cmp' function
usort($array, "list_cmp");

// Print the sorted array
print_r($array);
?>

Output:

Array                                                       
(                                                           
    [0] => 1                                                
    [1] => 1                                                
    [2] => 3                                                
    [3] => 4                                                
    [4] => 2                                                
    [5] => 2                                                
    [6] => 2                                                
)     

Flowchart:

Flowchart: PHP - Sort an array according to another array as a priority list

For more Practice: Solve these Related Problems:

  • Write a PHP function that sorts an array based on the order of elements in a priority array provided as a parameter.
  • Write a PHP script to rearrange an array by first mapping its values to a priority list then sorting accordingly.
  • Write a PHP program to implement a custom comparison function that sorts an array according to priorities given in another array.
  • Write a PHP script to merge two arrays—one for priorities and one for data—and then output the sorted result based on the priority positions.

Go to:


PREV : Print Specific Elements from Multidimensional Array.
NEXT : Sort Subnets.

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.