PHP có một số chức năng liên quan đến việc sắp xếp các mảng và tài liệu này tồn tại để giúp sắp xếp tất cả.
Sự khác biệt chính là:
- Một số loại dựa trên các phím mảng, trong khi các khóa khác theo các giá trị: $array['key'] = 'value';array keys, whereas others by the values: $array['key'] = 'value';
- Có hay không mối tương quan giữa các khóa và giá trị được duy trì sau khi sắp xếp, có thể có nghĩa là các khóa được đặt lại bằng số (0,1,2 ...)
- Thứ tự của loại: bảng chữ cái, tăng dần (thấp đến cao), giảm dần (cao đến thấp), tự nhiên, ngẫu nhiên hoặc người dùng được xác định
- Lưu ý: Tất cả các chức năng sắp xếp này hoạt động trực tiếp trên chính biến mảng, trái ngược với việc trả lại một mảng được sắp xếp mới
- Nếu bất kỳ chức năng sắp xếp nào trong số này đánh giá hai thành viên bằng nhau thì họ giữ lại thứ tự ban đầu của họ. Trước Php 8.0.0, đơn đặt hàng của họ không được xác định (việc sắp xếp không ổn định).
array_multisort() | giá trị | Chuỗi khóa có, phím int không keys yes, int keys no | Tùy chọn mảng đầu tiên hoặc sắp xếp | array_walk() |
asort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | arsort() |
arsort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | asort() |
krsort() | Vâng | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | ksort() |
ksort() | Vâng | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | krsort() |
natcasesort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | natsort() |
natsort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | natcasesort() |
rsort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | sort() |
shuffle() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | array_rand() |
sort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | rsort() |
uasort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | uksort() |
uksort() | Vâng | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | uasort() |
usort() | giá trị | Chuỗi khóa có, phím int không | Tùy chọn mảng đầu tiên hoặc sắp xếp | uasort() |
Vâng ¶
tăng dần
While this may seem obvious, user-defined array sorting functions ( uksort(), uasort(), usort() ) will *not* be called if the array does not have *at least two values in it*.
The following code:
<?phpfunction usortTest($a, $b) {
var_dump($a);
var_dump($b);
return -1;
}$test = array('val1');
usort($test, "usortTest");$test2 = array('val2', 'val3');
usort($test2, "usortTest");?>
Will output:
string(4) "val3"
string(4) "val2"
The first array doesn't get sent to the function.
Please, under no circumstance, place any logic that modifies values, or applies non-sorting business logic in these functions as they will not always be executed.
giảm dần ¶
Chìa khóa
Another way to do a case case-insensitive sort by key would simply be:
<?php
uksort($array, 'strcasecmp');
?>
Since strcasecmp is already predefined in php it saves you the trouble to actually write the comparison function yourself.
tự nhiên, trường hợp không nhạy cảm ¶
Thiên nhiên
While this may seem obvious, user-defined array sorting functions ( uksort(), uasort(), usort() ) will *not* be called if the array does not have *at least two values in it*.1
While this may seem obvious, user-defined array sorting functions ( uksort(), uasort(), usort() ) will *not* be called if the array does not have *at least two values in it*.2