1. Hàm natsort trong PHP

Hàm natsort() trong PHP được dùng để sắp xếp một mảng trong PHP. Cụ thể hàm natsort() sẽ sắp xếp các phần tử trong mảng. Các phần tử này sẽ được sắp xếp theo giá trị của phần tử dựa vào trật tự alphabet . Hàm natsort() trong PHP triển khai một thuật toán sắp xếp mà xếp thứ tự các chuỗi chữ-số như cách con người thường làm trong khi duy trì mối liên kết key-value . Điều này được miêu tả là natural ordering – sắp xếp tự nhiên. Ta có thể hiểu chúng sẽ được sắp xếp tự nhiên như thứ tự bình thường mà ta vẫn hay sử dụng theo bảng chữ cái hay số. Hàm natsort() được giới thiệu và sử dụng từ phiên bản PHP 4.0

2. Cú pháp của hàm natsort() trong PHP

Ta có cú pháp của hàm natsort() trong PHP là :

natsort($array)

Trong đó $array chính là mảng truyền vào mà ta cần sắp xếp. Hàm natsort() cũng chỉ chấp nhận và bắt buộc một tham số duy nhất là $array . Hàm sẽ trả về True khi sắp xếp thành công hoặc False nếu sắp xếp thất bại. Với những phần tử được so sánh là bằng nhau thì chúng sẽ giữ nguyên vị trí ban đầu. Và con trỏ nội bộ của mảng sẽ được đặt lại lên phần tử đầu tiên của mảng.

Ví dụ : sắp xếp mảng với hàm natsort()

<?php  
$arr = array("lttd15.php", "lttd10.phpphp", "lttd1.php", "lttd22.php", "lttd2.php");
natsort($arr);

echo '<pre>';
print_r($arr);
  
?>

Kết quả

Array
(
    [2] => lttd1.php
    [4] => lttd2.php
    [1] => lttd10.phpphp
    [0] => lttd15.php
    [3] => lttd22.php
)

Ta có thể thấy rằng hàm natsort() sẽ khác gì hàm natcasesort() . Ở đây với hàm natcasesort() thì hàm này sẽ sắp xếp các mảng mà không phân biệt chữ hoa chữ thường. Còn với hàm natsort() thì có. Cụ thể ta sẽ xem ở phần ví dụ nhé.

3. Ví dụ về hàm natsort() trong PHP

Ví dụ 1: so sánh giữa việc sắp xếp giữa hàm natsort() và hàm natcasesort()

<?php
$array1 = $array2 = array("bai1.php","Bai10.php",
"bai2.php","bai22.php","Bai 15.php");
 
natsort($array1);
echo "Sắp xếp theo natsort";
echo "<pre>";
print_r($array1);
echo "</pre>";
 
 
natcasesort($array2);
echo "Sắp xếp theo natcasesort";
echo "<pre>";
print_r($array2);
echo "</pre>";
?>

Kết quả

Sắp xếp theo natsort
Array
(
    [1] => Bai10.php
    [4] => Bai 15.php
    [0] => bai1.php
    [2] => bai2.php
    [3] => bai22.php
)
Sắp xếp theo natcasesort
Array
(
    [0] => bai1.php
    [2] => bai2.php
    [1] => Bai10.php
    [4] => Bai 15.php
    [3] => bai22.php
)

Ta có thể thấy với hàm natcasesort() vẫn sẽ xắp xếp mảng một cách bình thường mà chắc ta cũng không có gì thắc mắc. Còn với hàm nasort() thì khác. Với mảng truyền vào có những giá trị chữ hoa chữ thường thì lúc này hàm sẽ ưu tiên sắp xếp chữ hoa trước chữ thường sau. Còn lại thì chúng vẫn sẽ được sắp xếp theo thứ tự tự nhiên.
Ví dụ 2: so sánh giữa việc sắp xếp giữa hàm natsort() và hàm sort()

<?php
$temp_files = array("temp15.txt","temp10.txt",
"temp1.txt","temp22.txt","temp2.txt");

sort($temp_files);
echo "sử dụng sort: ";
echo "<pre>";
print_r($temp_files);
echo "<br>";

natsort($temp_files);
echo "sử dụng natsort: ";
echo "<pre>";
print_r($temp_files);
?>

Kết quả

sử dụng sort:
Array
(
    [0] => temp1.txt
    [1] => temp10.txt
    [2] => temp15.txt
    [3] => temp2.txt
    [4] => temp22.txt
)

sử dụng natsort: 
Array
(
    [0] => temp1.txt
    [3] => temp2.txt
    [1] => temp10.txt
    [2] => temp15.txt
    [4] => temp22.txt
)


Ví dụ 3: so sánh giữa việc sắp xếp giữa hàm asort() và hàm natsort()

<?php
$array1 = $array2 = array("img12.png", "img10.png", "img2.png", "Img1.png");

asort($array1);
echo "sử dụng asort";
echo '<pre>';
print_r($array1);

natsort($array2);
echo "sử dụng natsort";
echo '<pre>';
print_r($array2);
?>

Kết quả

sử dụng asort
Array
(
    [3] => Img1.png
    [1] => img10.png
    [0] => img12.png
    [2] => img2.png
)
sử dụng natsort
Array
(
    [3] => Img1.png
    [2] => img2.png
    [1] => img10.png
    [0] => img12.png
)