Bird
Raised Fist0
PHPprogramming~5 mins

Array sort functions in PHP

Choose your learning style10 modes available
Introduction

Sorting arrays helps organize data so it's easier to find or use. PHP provides simple functions to sort arrays in different ways.

When you want to list names in alphabetical order.
When you need to arrange numbers from smallest to largest.
When you want to sort data before displaying it on a webpage.
When you want to sort an array but keep the original keys.
When you want to sort arrays in reverse order.
Syntax
PHP
<?php
// Sort array values in ascending order and reindex keys
bool sort(array &$array)

// Sort array values in descending order and reindex keys
bool rsort(array &$array)

// Sort array by keys in ascending order
bool ksort(array &$array)

// Sort array by keys in descending order
bool krsort(array &$array)

// Sort array and maintain key association in ascending order
bool asort(array &$array)

// Sort array and maintain key association in descending order
bool arsort(array &$array)
?>

All these functions change the original array directly (in-place).

They return true on success and false on failure.

Examples
Sorts values alphabetically and resets keys to 0,1,2...
PHP
<?php
$fruits = ['banana', 'apple', 'cherry'];
sort($fruits);
print_r($fruits);
Sorts array by keys in ascending order, keys stay the same.
PHP
<?php
$numbers = [3 => 10, 1 => 5, 2 => 7];
ksort($numbers);
print_r($numbers);
Sorts by values ascending but keeps the original keys.
PHP
<?php
$prices = ['apple' => 3, 'banana' => 1, 'cherry' => 2];
asort($prices);
print_r($prices);
Sorting an empty array does nothing and is safe.
PHP
<?php
$empty = [];
sort($empty);
print_r($empty);
Sample Program

This program shows how sorting changes the array order and keys. It prints the array before and after sorting with different functions.

PHP
<?php
// Create an array of fruits with keys
$fruits = [2 => 'banana', 0 => 'apple', 1 => 'cherry'];

// Print original array
echo "Original array:\n";
print_r($fruits);

// Sort values ascending and reset keys
sort($fruits);
echo "\nAfter sort():\n";
print_r($fruits);

// Create an associative array of prices
$prices = ['apple' => 3, 'banana' => 1, 'cherry' => 2];

// Print original prices
echo "\nOriginal prices:\n";
print_r($prices);

// Sort prices by value ascending, keep keys
asort($prices);
echo "\nAfter asort():\n";
print_r($prices);

// Sort prices by key descending
krsort($prices);
echo "\nAfter krsort():\n";
print_r($prices);
?>
OutputSuccess
Important Notes

Sorting functions usually run in O(n log n) time, which is fast for most uses.

They change the original array, so if you need the original order, copy the array first.

Common mistake: expecting keys to stay the same with sort() -- it resets keys.

Use asort() or arsort() if you want to keep keys with sorted values.

Summary

PHP has many array sort functions to order values or keys.

sort() resets keys, asort() keeps keys.

Sorting helps organize data for easier use or display.

Practice

(1/5)
1. Which PHP function sorts an array and keeps the original keys intact?
easy
A. rsort()
B. sort()
C. ksort()
D. asort()

Solution

  1. Step 1: Understand key preservation in sorting

    asort() sorts values but keeps the original keys unchanged.
  2. Step 2: Compare with other functions

    sort() resets keys, rsort() sorts in reverse but resets keys, ksort() sorts by keys, not values.
  3. Final Answer:

    asort() -> Option D
  4. Quick Check:

    Keep keys while sorting values = asort() [OK]
Hint: Use asort() to sort values and keep keys unchanged [OK]
Common Mistakes:
  • Confusing sort() with asort() for key preservation
  • Thinking ksort() sorts by values
  • Assuming rsort() keeps keys
2. Which of the following is the correct syntax to sort an array in ascending order and reset keys in PHP?
easy
A. asort($array);
B. sort($array);
C. ksort($array);
D. arsort($array);

Solution

  1. Step 1: Identify function for ascending sort with key reset

    sort() sorts array values in ascending order and resets keys.
  2. Step 2: Check other options

    asort() keeps keys, ksort() sorts by keys, arsort() sorts descending.
  3. Final Answer:

    sort($array); -> Option B
  4. Quick Check:

    Ascending sort with reset keys = sort() [OK]
Hint: Use sort() to sort ascending and reset keys [OK]
Common Mistakes:
  • Using asort() when keys should reset
  • Confusing ksort() with value sort
  • Using arsort() for ascending order
3. What will be the output of the following PHP code?
$arr = [3 => 'apple', 1 => 'banana', 2 => 'cherry'];
sort($arr);
print_r($arr);
medium
A. [0 => 'apple', 1 => 'banana', 2 => 'cherry']
B. [1 => 'banana', 2 => 'cherry', 3 => 'apple']
C. [0 => 'banana', 1 => 'cherry', 2 => 'apple']
D. [0 => 'apple', 1 => 'cherry', 2 => 'banana']

Solution

  1. Step 1: Understand sort() behavior on keys

    sort() sorts values ascending and resets keys starting from 0.
  2. Step 2: Sort values and assign new keys

    Values sorted ascending: 'apple', 'banana', 'cherry'. Keys reset to 0,1,2 respectively.
  3. Final Answer:

    [0 => 'apple', 1 => 'banana', 2 => 'cherry'] -> Option A
  4. Quick Check:

    sort() resets keys and sorts ascending [OK]
Hint: sort() resets keys and sorts values ascending [OK]
Common Mistakes:
  • Expecting original keys to remain
  • Confusing sort() with asort()
  • Mixing order of sorted values
4. Identify the error in the following PHP code snippet:
$arr = ['b' => 2, 'a' => 1, 'c' => 3];
ksort($arr, SORT_DESC);
print_r($arr);
medium
A. ksort() sorts values, not keys
B. Array keys must be numeric for ksort()
C. ksort() does not accept SORT_DESC as a parameter
D. print_r() cannot print associative arrays

Solution

  1. Step 1: Check ksort() parameters

    ksort() sorts array by keys in ascending order only; it does not support descending order.
  2. Step 2: Understand SORT_DESC usage

    SORT_DESC is invalid for ksort(); to sort keys descending, use krsort() instead.
  3. Final Answer:

    ksort() does not accept SORT_DESC as a parameter -> Option C
  4. Quick Check:

    ksort() only sorts keys ascending [OK]
Hint: Use krsort() for descending key sort, not ksort() [OK]
Common Mistakes:
  • Passing SORT_DESC to ksort()
  • Thinking ksort() sorts values
  • Believing print_r() can't print associative arrays
5. You have an associative array with user IDs as keys and scores as values:
$scores = [101 => 50, 102 => 75, 103 => 50, 104 => 90];
You want to sort the array by scores in descending order but keep the user IDs as keys. Which function should you use?
hard
A. arsort()
B. rsort()
C. krsort()
D. sort()

Solution

  1. Step 1: Identify sorting by values descending with keys preserved

    arsort() sorts array by values in descending order and keeps keys intact.
  2. Step 2: Compare with other functions

    rsort() sorts values descending but resets keys, krsort() sorts keys descending, sort() sorts ascending and resets keys.
  3. Final Answer:

    arsort() -> Option A
  4. Quick Check:

    Sort values descending and keep keys = arsort() [OK]
Hint: Use arsort() to sort values descending and keep keys [OK]
Common Mistakes:
  • Using rsort() which resets keys
  • Confusing krsort() with value sort
  • Using sort() which sorts ascending and resets keys
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard