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:
php
sort(array &$array, int $sort_flags = SORT_REGULAR): bool
  • Ví dụ:
php
$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:
php
rsort(array &$array, int $sort_flags = SORT_REGULAR): bool
  • Ví dụ:
php
$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:
php
ksort(array &$array, int $sort_flags = SORT_REGULAR): bool
  • Ví dụ:
php
$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:
php
krsort(array &$array, int $sort_flags = SORT_REGULAR): bool
  • Ví dụ:
php
$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:
php
asort(array &$array, int $sort_flags = SORT_REGULAR): bool
  • Ví dụ:
php
$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:
php
arsort(array &$array, int $sort_flags = SORT_REGULAR): bool
  • Ví dụ:
php
$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:
php
usort(array &$array, callable $callback): bool
  • Ví dụ:
php
$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:
php
uasort(array &$array, callable $callback): bool
  • Ví dụ:
php
$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:
php
uksort(array &$array, callable $callback): bool
  • Ví dụ:
php
$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:
php
natsort(array &$array): bool
  • Ví dụ:
php
$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:
php
natcasesort(array &$array): bool
  • Ví dụ:
php
$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:
php
array_multisort(array &$array, array $..., int $...)
  • Ví dụ:
php
$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àmMục đíchThứ tựGiữ keyCallback
sort()Sắp xếp giá trị tăng dầnTăngKhôngKhông
rsort()Sắp xếp giá trị giảm dầnGiảmKhôngKhông
asort()Sắp xếp giá trị tăng dầnTăngKhông
arsort()Sắp xếp giá trị giảm dầnGiảmKhông
ksort()Sắp xếp key tăng dầnTăngKhông
krsort()Sắp xếp key giảm dầnGiảmKhông
usort()Sắp xếp giá trị theo callbackTuỳ ýKhông
uasort()Sắp xếp giá trị callback giữ keyTuỳ ý
uksort()Sắp xếp key theo callbackTuỳ ý
natsort()Sắp xếp tự nhiênTăngKhông
natcasesort()Sắp xếp tự nhiên không phân biệt chữTăngKhông
array_multisort()Sắp xếp nhiều mảngTuỳ ýKhôngKhô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! 🚀