Sắp xếp mảng là một trong những thao tác cơ bản nhưng rất quan trọng khi xử lý dữ liệu trong PHP. PHP cung cấp rất nhiều hàm để sắp xếp mảng theo giá trị, theo key, hoặc với các tùy chỉnh phức tạp hơn như thứ tự tự nhiên. Trong bài viết này, CodeTutHub sẽ tổng hợp tất cả các hàm sắp xếp mảng trong PHP, cách sử dụng và các lưu ý quan trọng khi áp dụng chúng.
1. Các hàm sắp xếp mảng theo giá trị
1.1. sort()
Hàm sort() sắp xếp mảng tăng dần theo giá trị. Nếu mảng có key là chuỗi, chúng sẽ bị reset lại về dạng số.
- Cú pháp:
sort(array &$array, int $sort_flags = SORT_REGULAR): bool
- Ví dụ:
$array = [3, 1, 4, 2];
sort($array);
print_r($array); // [1, 2, 3, 4]
1.2. rsort()
Hàm rsort() sắp xếp mảng giảm dần theo giá trị và tương tự như sort(), key chuỗi sẽ bị reset.
- Cú pháp:
rsort(array &$array, int $sort_flags = SORT_REGULAR): bool
- Ví dụ:
$array = [3, 1, 4, 2];
rsort($array);
print_r($array); // [4, 3, 2, 1]
2. Các hàm sắp xếp mảng theo key
2.1. ksort()
Hàm ksort() sắp xếp mảng theo key tăng dần và giữ nguyên giá trị.
- Cú pháp:
ksort(array &$array, int $sort_flags = SORT_REGULAR): bool
- Ví dụ:
$array = ["c" => 3, "a" => 1, "b" => 2];
ksort($array);
print_r($array); // ["a" => 1, "b" => 2, "c" => 3]
2.2. krsort()
Hàm krsort() sắp xếp mảng theo key giảm dần và giữ nguyên giá trị.
- Cú pháp:
krsort(array &$array, int $sort_flags = SORT_REGULAR): bool
- Ví dụ:
$array = ["c" => 3, "a" => 1, "b" => 2];
krsort($array);
print_r($array); // ["c" => 3, "b" => 2, "a" => 1]
3. Các hàm sắp xếp mảng giữ nguyên key
3.1. asort()
Hàm asort() sắp xếp mảng tăng dần theo giá trị, nhưng giữ nguyên key.
- Cú pháp:
asort(array &$array, int $sort_flags = SORT_REGULAR): bool
- Ví dụ:
$array = ["c" => 3, "a" => 1, "b" => 2];
asort($array);
print_r($array); // ["a" => 1, "b" => 2, "c" => 3]
3.2. arsort()
Hàm arsort() sắp xếp mảng giảm dần theo giá trị và giữ nguyên key.
- Cú pháp:
arsort(array &$array, int $sort_flags = SORT_REGULAR): bool
- Ví dụ:
$array = ["c" => 3, "a" => 1, "b" => 2];
arsort($array);
print_r($array); // ["c" => 3, "b" => 2, "a" => 1]
4. Các hàm sắp xếp với callback tùy chỉnh
4.1. usort()
Hàm usort() sắp xếp mảng theo giá trị dựa trên một hàm callback do người dùng định nghĩa.
- Cú pháp:
usort(array &$array, callable $callback): bool
- Ví dụ:
$array = [3, 1, 4, 2];
usort($array, function($a, $b) {
return $b <=> $a; // Giảm dần
});
print_r($array); // [4, 3, 2, 1]
4.2. uasort()
Hàm uasort() sắp xếp mảng theo giá trị dựa trên callback, giữ nguyên key.
- Cú pháp:
uasort(array &$array, callable $callback): bool
- Ví dụ:
$array = ["c" => 3, "a" => 1, "b" => 2];
uasort($array, function($a, $b) {
return $b <=> $a;
});
print_r($array); // ["c" => 3, "b" => 2, "a" => 1]
4.3. uksort()
Hàm uksort() sắp xếp mảng theo key dựa trên callback.
- Cú pháp:
uksort(array &$array, callable $callback): bool
- Ví dụ:
$array = ["c" => 3, "a" => 1, "b" => 2];
uksort($array, function($a, $b) {
return $b <=> $a;
});
print_r($array); // ["c" => 3, "b" => 2, "a" => 1]
5. Các hàm sắp xếp tự nhiên
5.1. natsort()
Hàm natsort() sắp xếp mảng theo thứ tự tự nhiên (natural order), phù hợp với các chuỗi có số.
- Cú pháp:
natsort(array &$array): bool
- Ví dụ:
$array = ["img2.png", "img10.png", "img1.png"];
natsort($array);
print_r($array); // ["img1.png", "img2.png", "img10.png"]
5.2. natcasesort()
Hàm natcasesort() giống natsort(), nhưng không phân biệt chữ hoa/chữ thường.
- Cú pháp:
natcasesort(array &$array): bool
- Ví dụ:
$array = ["Img2.png", "img10.png", "img1.png"];
natcasesort($array);
print_r($array); // ["img1.png", "Img2.png", "img10.png"]
6. Hàm sắp xếp mảng nhiều chiều
array_multisort()
Hàm array_multisort() sắp xếp nhiều mảng cùng lúc hoặc sắp xếp mảng đa chiều.
- Cú pháp:
array_multisort(array &$array, array $..., int $...)
- Ví dụ:
$array1 = [3, 1, 4, 2];
$array2 = ["C", "A", "D", "B"];
array_multisort($array1, $array2);
print_r($array1); // [1, 2, 3, 4]
print_r($array2); // ["A", "B", "C", "D"]
Tóm tắt
| Hàm | Mục đích | Thứ tự | Giữ key | Callback |
|---|---|---|---|---|
sort() | Sắp xếp giá trị tăng dần | Tăng | Không | Không |
rsort() | Sắp xếp giá trị giảm dần | Giảm | Không | Không |
asort() | Sắp xếp giá trị tăng dần | Tăng | Có | Không |
arsort() | Sắp xếp giá trị giảm dần | Giảm | Có | Không |
ksort() | Sắp xếp key tăng dần | Tăng | Có | Không |
krsort() | Sắp xếp key giảm dần | Giảm | Có | Không |
usort() | Sắp xếp giá trị theo callback | Tuỳ ý | Không | Có |
uasort() | Sắp xếp giá trị callback giữ key | Tuỳ ý | Có | Có |
uksort() | Sắp xếp key theo callback | Tuỳ ý | Có | Có |
natsort() | Sắp xếp tự nhiên | Tăng | Có | Không |
natcasesort() | Sắp xếp tự nhiên không phân biệt chữ | Tăng | Có | Không |
array_multisort() | Sắp xếp nhiều mảng | Tuỳ ý | Không | Không |
Trên đây là danh sách toàn diện các hàm sắp xếp mảng trong PHP. Hy vọng bài viết này sẽ giúp bạn làm chủ các thao tác sắp xếp mảng một cách hiệu quả! Nếu bạn thấy bài viết hữu ích, hãy chia sẻ để nhiều người cùng biết đến nhé!
CodeTutHub – Nơi bạn tìm thấy mọi kiến thức lập trình! 🚀








