Làm thế nào để sắp xếp một mảng theo giá trị sử dụng hàm so sánh do người dùng định nghĩa trong PHP?


Trong PHP, chúng ta có thể sử dụng hàm usort() để sắp xếp một mảng theo giá trị sử dụng hàm so sánh do người dùng định nghĩa. Hàm usort() sẽ sắp xếp các phần tử trong mảng theo thứ tự tăng dần hoặc giảm dần dựa trên giá trị trả về của hàm so sánh.

Cú pháp của hàm usort() như sau:

usort(array &$array, callable $cmp_function)

Trong đó: - $array: Mảng cần sắp xếp. - $cmp_function: Hàm so sánh do người dùng định nghĩa.

Hàm so sánh này sẽ nhận vào hai tham số và trả về một giá trị nguyên dương, âm hoặc bằng 0 tương ứng với thứ tự của hai phần tử trong mảng. Nếu giá trị trả về là dương, thì phần tử thứ hai sẽ được đặt trước phần tử thứ nhất trong mảng sau khi sắp xếp. Nếu giá trị trả về là âm, thì phần tử thứ nhất sẽ được đặt trước phần tử thứ hai. Nếu giá trị trả về là 0, thì thứ tự của hai phần tử sẽ không thay đổi.

Ví dụ, để sắp xếp một mảng các số nguyên theo thứ tự giảm dần, chúng ta có thể định nghĩa hàm so sánh như sau:

function compare($a, $b) {
    if ($a == $b) {
        return 0;
    }
    return ($a > $b) ? -1 : 1;
}

$array = array(3, 1, 4, 1, 5, 9, 2, 6, 5, 3, 5);

usort($array, 'compare');

print_r($array);

Kết quả sẽ là:

Array
(
    [0] => 9
    [1] => 6
    [2] => 5
    [3] => 5
    [4] => 5
    [5] => 4
    [6] => 3
    [7] => 3
    [8] => 2
    [9] => 1
    [10] => 1
)

Trong ví dụ này, hàm so sánh compare() sẽ so sánh hai phần tử $a$b và trả về giá trị âm nếu $a lớn hơn $b, giá trị dương nếu $a nhỏ hơn $b, và giá trị bằng 0 nếu hai phần tử bằng nhau. Sau đó, chúng ta sử dụng hàm usort() để sắp xếp mảng $array theo thứ tự giảm dần sử dụng hàm so sánh compare().



About the author

William Pham is the Admin and primary author of Howto-Code.com. With over 10 years of experience in programming. William Pham is fluent in several programming languages, including Python, PHP, JavaScript, Java, C++.