Sắp xếp các phần tử trong mảng (PHP)

Các phần tử của mảng có thể được sắp xếp theo thứ tự abc hoặc thứ tự số, theo chiều giảm dần hoặc tăng dần.

Hàm sắp xếp cho mảng

Trong bài viết này, chúng ta sẽ tìm hiểu một số hàm sắp xếp cho mảng dưới đây:

  • sort() – sắp xếp theo thứ tự tăng dần (tính theo giá trị)
  • rsort() – sắp xếp theo thứ tự giảm dần (tính theo giá trị)
  • asort() – sắp xếp mảng kết hợp theo thứ tự tăng dần, tính theo giá trị
  • ksort() – sắp xếp mảng kết hợp (liên kết) theo thứ tự tăng dần tính theo khóa
  • arsort() – sắp xếp mảng kết hợp giảm dần tính theo giá trị
  • krsort() – sắp xếp mảng theo thứ tự giảm dần tính theo khóa

Sắp xếp mảng theo thứ tự tăng dần – sort()

Ví dụ dưới đây sẽ sắp xếp các phần tử của mảng $lop_hoc theo thứ tự tăng dần của bảng chữ cái alphabe:

<?php
$lop_hoc = array(“Tuấn”, “Bình”, “Mai”);
sort($lop_hoc);

$clength = count($lop_hoc);
for($x = 0; $x < $clength; $x++) {
echo $lop_hoc[$x];
echo “,”;}
?>

Khi bạn chạy đoạn code trên nó sẽ cho kết quả: Bình, Mai, TuấnVí dụ dưới đây sắp xếp các phần tử của mảng bang_diem theo thứ tự tăng dần:

<?php
$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);
sort($bang_diem);

$clength = count($bang_diem);
for($x = 0; $x < $clength; $x++) {
echo $bang_diem[$x];
echo ” ,”;}
?>

Khi chạy đoạn code trên bạn sẽ thấy kết quả như sau: 5 ,5.5 ,6 ,7 ,7.2 ,7.8 ,9 ,10

Sắp xếp theo thứ tự giảm dần – rsort()

Chúng ta lấy ví dụ của các phần ở trên, chỉ thay câu lệnh sắp xếp để xem kết quả sẽ thay đổi như thế nào:

<?php
$lop_hoc = array(“Tuấn”, “Bình”, “Mai”);
rsort($lop_hoc);

$clength = count($lop_hoc);
for($x = 0; $x < $clength; $x++) {
echo $lop_hoc[$x];
echo “, “;}
?>

Và đây là kết quả: Tuấn, Mai, Bình,Cũng như vậy với đoạn code mẫu thử nghiệm với thứ tự giảm dần đối với mảng có chứa các giá trị là số:

<?php
$bang_diem = array(7, 5.5, 9, 6, 7.2, 7.8, 10, 5);
rsort($bang_diem);

$clength = count($bang_diem);
for($x = 0; $x < $clength; $x++) {
echo $bang_diem[$x];
echo “, “;}
?>

Đây là kết quả: 10, 9, 7.8, 7.2, 7, 6, 5.5, 5

Sắp xếp mảng liên kết theo giá trị – asort()

Ví dụ dưới đây sắp xếp mảng liên kết theo thứ tự tăng dần tính theo giá trị:

<?php
$tuoi = array(“Ha Men”=>”29”, “Duc Anh”=>”30”, “Duc Hung”=>”25”);
asort($tuoi);

foreach($tuoi as $x => $x_value) {
echo “Khóa=” . $x . “, Giá trị=” . $x_value;
echo “<br>”;
}
?>

Và đây là kết quả:
Khóa=Duc Hung, Giá trị=25
Khóa=Ha Men, Giá trị=29
Khóa=Duc Anh, Giá trị=30

Sắp xếp mảng liên kết theo thứ tự tăng dần tính theo khóa

Chúng ta dùng hàm ksort() để làm điều này, vẫn lấy ví dụ trên để thử nghiệm code:

<?php
$tuoi = array(“Ha Men”=>”29”, “Duc Anh”=>”30”, “Duc Hung”=>”25”);
ksort($tuoi);
foreach($tuoi as $x => $x_value) {
echo “Khóa=” . $x . “, Giá trị=” . $x_value;
echo “<br>”;
}
?>

Và đây là kết quả:
Khóa=Duc Anh, Giá trị=30
Khóa=Duc Hung, Giá trị=25
Khóa=Ha Men, Giá trị=29
Bạn thấy khóa được sắp xếp theo thứ tự tăng dần ( trong trường hợp này là của bảng chữ cái ABC)

Sắp xếp mảng liên kết theo thư tự giảm dần tính theo giá trị

Dưới đây là đoạn code mẫu, chúng ta sử dụng hàm arsort():

<?php
$tuoi = array(“Ha Men”=>”29”, “Duc Anh”=>”30”, “Duc Hung”=>”25”);
arsort($tuoi);

foreach($tuoi as $x => $x_value) {
echo “Khóa=” . $x . “, Giá trị=” . $x_value;
echo “<br>”;
}
?>

Và đây là kết quả:

Khóa=Duc Anh, Giá trị=30
Khóa=Ha Men, Giá trị=29
Khóa=Duc Hung, Giá trị=25

Bạn có thể thấy giá trị giảm dần.

Sắp xếp mảng theo thứ tự giảm dần tính theo khóa

Dưới đây là code mẫu, chúng ta sử dụng hàm krsort()

<?php
$tuoi = array(“Ha Men”=>”29”, “Duc Anh”=>”30”, “Duc Hung”=>”25”);
krsort($tuoi);
foreach($tuoi as $x => $x_value) {
echo “Khóa=” . $x . “, Giá trị=” . $x_value;
echo “<br>”;
}
?>

Và đây là kết quả:

Khóa=Ha Men, Giá trị=29
Khóa=Duc Hung, Giá trị=25
Khóa=Duc Anh, Giá trị=30

Bạn có thể thấy khóa giảm dần.

2 thoughts on “Sắp xếp các phần tử trong mảng (PHP)”

  1. cho em 1 bài
    Nhập vào một mảng 10 số nguyên bất kỳ
    .in ra mảng đã nhập.
    .in ra các số >10.
    *viết hàm để:
    -sấp xếp mảng theo chiều tăng dân
    -sấp xếp mảng theo chiều giảm dân
    xin cảm ơn

    Reply

Leave a Comment