Định nghĩa Hàm array_multisort() trong PHP__Hàm Show Cú pháp Hàm array_multisort() trong PHPHàm
Tham số
Trả về giá trị
Ví dụ minh họa cách sử dụng hàm array_multisort() trong PHP:
Lưu chương trình trên trong một file có tên là test.php trong htdocs, sau đó mở trình duyệt và gõ địa chỉ http://localhost:8080/test.php sẽ cho kết quả: Xem thêm Hàm trong php Nội Dung
Hàm array_multisort() trong PHP được xử dụng để sắp xếp các mảng trong PHP. Hàm này có thể sắp xếp một số mảng cùng lúc hay sắp xếp mảng đa chiều theo một hoặc nhiều chiều. Hàm này sẽ trả về một mảng đã được sắp xếp. Với hàm này các key dạng chuỗi sẽ được giữ nguyên còn các key dạng số sẽ được reset lại và bắt đầu lại theo thứ tự tăng dần bắt đầu từ 0. Ta cũng có thể chỉ định thứ sắp xếp và các tham số kiểu sắp xếp sau mỗi mảng. Nếu như ta không chỉ định thì mỗi tham số mảng sẽ được giá trị mặc định. 2. Cú pháp hàm array_multisort() trong PHPTa có cú pháp của hàm array_multisort() trong PHP là:
Trong đó:
Ta có một số tham số sortype có thể lựa chọn như sau:
Nếu chúng ta muốn sắp xếp nhiều mảng, chúng ta có thể chuyển chúng dưới dạng các tham số như $array2, $array3… theo sau là sortorder , sorttype của chúng. Ví dụ: sắp xếp mảng theo thứ tự tăng dần <?php $a=array("PHP","Java","Python","C","HTML"); array_multisort($a); echo '<pre>'; print_r($a); ?> Kết quả Array ( [0] => C [1] => HTML [2] => Java [3] => PHP [4] => Python ) Mảng sau khi sử dụng hàm array_multisort() đã được sắp xếp theo thứ tự trong bảng chữ cái. Khá là đơn giản phải không. 3. Ví dụ về hàm array_multisort() trong PHPVí dụ 1: sắp xếp hai mảng theo thứ tự tăng dần <?php $a1=array("PHP","HTML","C"); $a2=array("Python","Java","HTML"); array_multisort($a1,$a2); echo '<pre>'; print_r($a1); echo '<pre>'; print_r($a2); ?> Kết quả Array ( [0] => C [1] => HTML [2] => PHP ) Array ( [0] => HTML [1] => Java [2] => Python ) Ví dụ 2: sắp xếp với những giá trị giống nhau <?php $a1=array("Dog","Dog","Cat"); $a2=array("Pluto","Fido","Missy"); array_multisort($a1,$a2); echo '<pre>'; print_r($a1); echo '<pre>'; print_r($a2); ?> Kết quả Array ( [0] => Cat [1] => Dog [2] => Dog ) Array ( [0] => Missy [1] => Fido [2] => Pluto ) Với những giá trị giống nhau thì chúng vẫn được sắp xếp một cách bình thường và không bị thay đổi hay ghi đè. Ví dụ 3: sắp xếp mảng sử dụng thêm thông số khác <?php $a1=array("PHP","Java","Python"); $a2=array("HTML","C","XML"); array_multisort($a1,SORT_ASC,$a2,SORT_DESC); echo '<pre>'; print_r($a1); echo '<pre>'; print_r($a2); ?> Kết quả Array ( [0] => Java [1] => PHP [2] => Python ) Array ( [0] => C [1] => HTML [2] => XML ) Trong ví dụ này với mảng $a1 thì mình sử dụng them thông số là SORT_ASC tức là vẫn sẽ sắp xếp theo thứ tự tăng dần và đây là giá trị mặc định (A -> Z). Nhưng với mảng $a2 thì mình lại truyền vào thông số là SORT_DESC . Lúc này thứ tự sắp xếp sẽ là giảm dần chứ không phải tăng dần nữa (Z -> A) Ví dụ 4: Hợp nhất hai mảng và sắp xếp chúng dưới dạng số, theo thứ tự giảm dần: <?php $a1=array(1,30,15,7,25); $a2=array(4,30,20,41,66); $num=array_merge($a1,$a2); array_multisort($num,SORT_DESC,SORT_NUMERIC); echo '<pre>'; print_r($num); ?> Kết quả Array ( [0] => 66 [1] => 41 [2] => 30 [3] => 30 [4] => 25 [5] => 20 [6] => 15 [7] => 7 [8] => 4 [9] => 1 ) Ở ví dụ này đầu tiên mình đã nối hai mảng lại thành một mảng là $num . Hàm được sử dụng ở đây là hàm array_merge() mà ta đã được tìm hiểu rồi. Sau đó là sử dụng hàm array_multisort() để sắp xếp như bình thường theo yêu cầu bài toán thôi. Ở đây là sắp xếp dạng số theo thứ tự giảm dần vì vậy ta phải truyền thêm vào hai thông số là SORT_DESC và SORT_NUMERIC Ví dụ 5: sắp xếp mảng đa chiều <?php $a = array( array("10", 11, 100, 100, "a"), array( 1, 2, "2", 3, 1) ); array_multisort($ar[0], SORT_ASC, SORT_STRING, $ar[1], SORT_NUMERIC, SORT_DESC); echo '<pre>'; var_dump($a); ?> Kết quả array(2) { [0]=> array(5) { [0]=> string(2) "10" [1]=> int(11) [2]=> int(100) [3]=> int(100) [4]=> string(1) "a" } [1]=> array(5) { [0]=> int(1) [1]=> int(2) [2]=> string(1) "2" [3]=> int(3) [4]=> int(1) } } Trong ví dụ này, sau khi sắp xếp, mảng đầu tiên sẽ biến đổi thành “10”, 100, 100, 11, “a” (nó được sắp xếp thành chuỗi theo thứ tự tăng dần). Hộp thứ hai sẽ chứa 1, 3, “2”, 2, 1 (được sắp xếp dưới dạng số, theo thứ tự giảm dần). Ví dụ 6: Sắp xếp mảng không phân biệt chữ hoa chữ thường <?php $array = array('Alpha', 'atomic', 'Beta', 'bank'); $array_lowercase = array_map('strtolower', $array); array_multisort($array_lowercase, SORT_ASC, SORT_STRING, $array); echo '<pre>'; print_r($array); ?> Kết quả Array ( [0] => Alpha [1] => atomic [2] => bank [3] => Beta ) SORT_STRING và SORT_REGULAR đều phân biệt chữ hoa chữ thường, các chuỗi bắt đầu bằng chữ hoa sẽ đứng trước các chuỗi bắt đầu bằng chữ thường. Mình đã sử dụng hàm array_map() để chuyển đổi hàm $array thành chữ thường. Sau đó tiến hành sắp xếp giá trị mảng đã chuyển đổi thành chữ thường. Mảng ban đầu sẽ từ đây mà sắp xếp các phần tử theo mảng chữ thường. Để thực hiện sắp xếp không phân biệt chữ hoa chữ thường, ta buộc thứ tự sắp xếp được xác định bằng một bản sao viết thường của mảng ban đầu. |