Sorting arrays helps organize data so it's easier to find or use. PHP provides simple functions to sort arrays in different ways.
Array sort functions in 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.
<?php $fruits = ['banana', 'apple', 'cherry']; sort($fruits); print_r($fruits);
<?php $numbers = [3 => 10, 1 => 5, 2 => 7]; ksort($numbers); print_r($numbers);
<?php $prices = ['apple' => 3, 'banana' => 1, 'cherry' => 2]; asort($prices); print_r($prices);
<?php $empty = []; sort($empty); print_r($empty);
This program shows how sorting changes the array order and keys. It prints the array before and after sorting with different functions.
<?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); ?>
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.
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
Solution
Step 1: Understand key preservation in sorting
asort()sorts values but keeps the original keys unchanged.Step 2: Compare with other functions
sort()resets keys,rsort()sorts in reverse but resets keys,ksort()sorts by keys, not values.Final Answer:
asort() -> Option DQuick Check:
Keep keys while sorting values = asort() [OK]
- Confusing sort() with asort() for key preservation
- Thinking ksort() sorts by values
- Assuming rsort() keeps keys
Solution
Step 1: Identify function for ascending sort with key reset
sort()sorts array values in ascending order and resets keys.Step 2: Check other options
asort()keeps keys,ksort()sorts by keys,arsort()sorts descending.Final Answer:
sort($array); -> Option BQuick Check:
Ascending sort with reset keys = sort() [OK]
- Using asort() when keys should reset
- Confusing ksort() with value sort
- Using arsort() for ascending order
$arr = [3 => 'apple', 1 => 'banana', 2 => 'cherry']; sort($arr); print_r($arr);
Solution
Step 1: Understand sort() behavior on keys
sort()sorts values ascending and resets keys starting from 0.Step 2: Sort values and assign new keys
Values sorted ascending: 'apple', 'banana', 'cherry'. Keys reset to 0,1,2 respectively.Final Answer:
[0 => 'apple', 1 => 'banana', 2 => 'cherry'] -> Option AQuick Check:
sort() resets keys and sorts ascending [OK]
- Expecting original keys to remain
- Confusing sort() with asort()
- Mixing order of sorted values
$arr = ['b' => 2, 'a' => 1, 'c' => 3]; ksort($arr, SORT_DESC); print_r($arr);
Solution
Step 1: Check ksort() parameters
ksort()sorts array by keys in ascending order only; it does not support descending order.Step 2: Understand SORT_DESC usage
SORT_DESCis invalid for ksort(); to sort keys descending, use krsort() instead.Final Answer:
ksort() does not accept SORT_DESC as a parameter -> Option CQuick Check:
ksort() only sorts keys ascending [OK]
- Passing SORT_DESC to ksort()
- Thinking ksort() sorts values
- Believing print_r() can't print associative arrays
$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?
Solution
Step 1: Identify sorting by values descending with keys preserved
arsort()sorts array by values in descending order and keeps keys intact.Step 2: Compare with other functions
rsort()sorts values descending but resets keys,krsort()sorts keys descending,sort()sorts ascending and resets keys.Final Answer:
arsort() -> Option AQuick Check:
Sort values descending and keep keys = arsort() [OK]
- Using rsort() which resets keys
- Confusing krsort() with value sort
- Using sort() which sorts ascending and resets keys
Ready to prove it?
Pass the test and this pattern moves unknown
