Hàm arsort() trong PHP

Hàm arsort() trong PHP
Hàm arsort() trong PHP

Chức năng của Hàm arsort() trong PHP

Hàm arsort() trong PHP dùng để sắp xếp các phần tử trong một mảng theo giá trị giảm dần và không xóa bỏ khóa (key) của các phần tử trong mảng, hàm này sắp xếp tất cả các phần tử có giá trị là số giảm dần hoặc sắp xếp tất cả phần tử có giá trị chuỗi giảm dần, nếu trong tất cả phần tử có cả giá trị số và chữ thì nó lấy các ký tự đầu tiên trong chuỗi là số để sắp xếp với các giá trị số.

Cú pháp của Hàm arsort() trong PHP

arsort($biến_mảng);

$biến_mảng: Biến của mảng.

Ví dụ Hàm arsort() trong PHP

<h2>Hàm arsort() sắp xếp giá trị chuỗi giảm dần</h2>
<?php
$manggiatrichu = array("Vân","Lực","Quỳnh");
arsort($manggiatrichu);
foreach($manggiatrichu as $key => $value){
echo $key." - ".$value."<br>";
}?>

<h2>Hàm arsort() sắp xếp giá trị số giảm dần</h2>
<?php 
$manggiatriso = array(29,35,1);
arsort($manggiatriso);
foreach($manggiatriso as $key => $value){
echo $key." - ".$value."<br>";
}
?>

<h2>Hàm arsort() sắp xếp giá trị số trong mảng liên kết giảm dần</h2>
<?php
$manglienket = array("Lực"=>"35", "Quỳnh"=>"1", "Vân"=>"29");
arsort($manglienket);
foreach($manglienket as $key => $value) {
    echo "Key = " . $key . ", Value = " . $value;
    echo "<br>";
}
?>

Kết quả:

/////Hàm arsort() sắp xếp giá trị chuỗi giảm dần
0 - Vân
2 - Quỳnh
1 - Lực

/////Hàm arsort() sắp xếp giá trị số giảm dần
1 - 35
0 - 29
2 - 1

/////Hàm arsort() sắp xếp giá trị số trong mảng liên kết giảm dần
Key = Lực, Value = 35
Key = Vân, Value = 29
Key = Quỳnh, Value = 1

Chạy Thử

Những lưu ý khi sử dụng hàm arsort() trong PHP

Khi sử dụng arsort(), điều quan trọng không chỉ là sắp xếp dữ liệu theo thứ tự giảm dần mà còn phải hiểu cách hàm tác động lên mảng và khóa phần tử. Điều này giúp tránh những lỗi không mong muốn khi xử lý dữ liệu trong thực tế.

arsort() có làm thay đổi mảng ban đầu không?

Có. arsort() sắp xếp trực tiếp trên chính mảng được truyền vào và giữ nguyên mối liên hệ giữa khóa với giá trị tương ứng. Vì vậy, nếu cần giữ lại dữ liệu gốc, bạn nên tạo một bản sao trước khi thực hiện sắp xếp.

<?php
$products = [
    'product_a' => 120,
    'product_b' => 350,
    'product_c' => 200
];

$sortedProducts = $products;

arsort($sortedProducts);

print_r($products);
print_r($sortedProducts);
?>

Trong ví dụ trên, $products vẫn giữ thứ tự ban đầu vì thao tác sắp xếp được thực hiện trên bản sao $sortedProducts. Đây là cách phù hợp khi một mảng cần được sử dụng cho nhiều mục đích khác nhau.

Phân biệt arsort() với rsort() và asort()

Cả ba hàm đều dùng để sắp xếp mảng nhưng có cách hoạt động khác nhau. arsort() sắp xếp giá trị theo thứ tự giảm dần và giữ nguyên khóa; asort() cũng giữ nguyên khóa nhưng sắp xếp giá trị theo thứ tự tăng dần; còn rsort() sắp xếp giảm dần nhưng đánh lại khóa của mảng.

Hàm Thứ tự giá trị Giữ khóa
arsort() Giảm dần
asort() Tăng dần
rsort() Giảm dần Không

Điểm khác biệt về khóa rất quan trọng khi mảng sử dụng các khóa có ý nghĩa, chẳng hạn mã sản phẩm, tên thuộc tính hoặc mã định danh. Nếu chỉ cần danh sách giá trị và không cần giữ khóa cũ, rsort() có thể phù hợp hơn.

Khi nào nên dùng arsort() thay vì các hàm sắp xếp khác?

Nên chọn arsort() khi thứ tự của giá trị cần được thay đổi nhưng khóa phải đi cùng đúng phần tử ban đầu. Trường hợp thường gặp là sắp xếp bảng điểm, thống kê số lượng, doanh thu hoặc dữ liệu được gắn với một mã riêng.

Ngược lại, nếu khóa không còn giá trị sau khi sắp xếp, có thể cân nhắc các hàm sắp xếp không bảo toàn khóa. Việc chọn đúng hàm ngay từ đầu giúp mã PHP dễ đọc hơn và hạn chế phải xử lý lại dữ liệu sau khi sắp xếp.

Lời kết

Cảm ơn các bạn đã tham khảo bài viết Hàm arsort() trong PHP.

  • 0 Bình luận
Trần Thị Vân | Content Creator Web Mới
Trần Thị Vân
Trần Thị Vân là Content Creator tại Web Mới, phụ trách nghiên cứu, biên soạn nội dung và chia sẻ kiến thức về website, SEO, lập trình cùng các xu hướng công nghệ
Đánh giá
Chia sẻ nội dung đánh giá của bạn về Hàm arsort() trong PHP
Email, Điện thoại của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *
Đánh giá của bạn
Tên *
Email
Số điện thoại *
Bình luận, Hỏi đáp
Yêu Cầu Báo Giá
Gửi trang web mẫu cần làm theo, chúng tôi sẽ báo giá đến bạn từ Email (tanlucit09@gmail.com - Bùi Tấn Lực) hoặc Zalo (Lực IT - 0398259259) !