Để sắp xếp các mảng kết hợp theo thứ tự tăng dần theo giá trị của chúng, bạn có thể sử dụng hàm asort[]
PHP asort[] Ví dụ
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
Để sắp xếp các mảng kết hợp theo thứ tự tăng dần theo khóa, bạn có thể sử dụng hàm ksort[]
PHP ksort[] Ví dụ
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
Làm cách nào để sắp xếp các mảng kết hợp theo thứ tự giảm dần trong PHP?
Để sắp xếp các mảng kết hợp theo thứ tự giảm dần theo giá trị của chúng, bạn có thể sử dụng hàm arsort[]
PHP arsort[] Ví dụ
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
Để sắp xếp các mảng kết hợp theo thứ tự giảm dần theo khóa, bạn có thể sử dụng hàm krsort[]
PHP krsort[] Ví dụ
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
Xem thêm
- Làm cách nào để in hoặc lặp lại một mảng trong PHP?
- Làm cách nào để thêm các phần tử vào một mảng trong PHP?
- Làm cách nào để kiểm tra xem giá trị có tồn tại trong mảng PHP không?
- Làm cách nào để tính độ dài của mảng trong PHP?
- Làm cách nào để chuyển đổi một mảng thành một chuỗi trong PHP?
Các ví dụ và bài viết về API sắp xếp PHP có liên quan
Làm cách nào để gửi yêu cầu POST bằng PHP?
Sự khác biệt giữa chúng chỉ đơn thuần là liệu các liên kết khóa-giá trị có được giữ hay không [các hàm "
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
7"], liệu nó sắp xếp từ thấp đến cao hay ngược lại ["function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
8"], liệu nó sắp xếp giá trị hay khóa ["function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
9"] và cách thức . thông thường]. xem http. //php. net/thủ công/vi/mảng. phân loại. php để biết tổng quan và liên kết đến các chi tiết khác________số 8Nếu bạn muốn sắp xếp
usort[$array, 'cmp'];
1 theo khóa 'foo' của mỗi mục nhập, bạn cần có chức năng so sánh tùy chỉnh. $array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
9 ở trên và các hàm liên quan hoạt động trên các giá trị đơn giản mà chúng biết cách so sánh và sắp xếp. Mặc dù vậy, PHP không chỉ đơn giản là "biết" phải làm gì với một giá trị phức tạp như usort[$array, 'cmp'];
3; Để làm được điều đó, bạn cần tạo một hàm so sánh. Hàm đó nhận hai phần tử và phải trả về
usort[$array, 'cmp'];
4 nếu các phần tử này được coi là bằng nhau, giá trị thấp hơn usort[$array, 'cmp'];
4 nếu giá trị đầu tiên thấp hơn và giá trị cao hơn usort[$array, 'cmp'];
4 nếu giá trị đầu tiên cao hơn. Đó là tất cả những gì cần thiếtfunction cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
Thông thường, bạn sẽ muốn sử dụng một hàm ẩn danh làm hàm gọi lại. Nếu bạn muốn sử dụng một phương thức hoặc phương thức tĩnh, hãy xem các cách khác để chỉ định gọi lại trong PHP
Sau đó, bạn sử dụng một trong các chức năng này
Một lần nữa, chúng chỉ khác nhau về việc liệu chúng có giữ liên kết khóa-giá trị và sắp xếp theo giá trị hoặc khóa hay không. Đọc tài liệu của họ để biết chi tiết
Ví dụ sử dụng
usort[$array, 'cmp'];
usort[$array, 'cmp'];
7 sẽ lấy hai mục từ mảng và gọi hàm usort[$array, 'cmp'];
8 của bạn với chúng. Vì vậy, usort[$array, 'cmp'];
9 sẽ được gọi với
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
00 là usort[$array, 'cmp'];
3 và
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
02 là một
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
03 khác. Sau đó, hàm trả về usort[$array, 'cmp'];
7 giá trị nào lớn hơn hoặc liệu chúng có bằng nhau hay không. usort[$array, 'cmp'];
7 lặp lại quá trình này chuyển các giá trị khác nhau cho
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
00 và
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
02 cho đến khi mảng được sắp xếp. Hàm usort[$array, 'cmp'];
8 sẽ được gọi nhiều lần, ít nhất bằng số lần có giá trị trong usort[$array, 'cmp'];
1, với các kết hợp giá trị khác nhau cho
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
00 và
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
02 mỗi lầnĐể làm quen với ý tưởng này, hãy thử điều này
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
0Tất cả những gì bạn đã làm là xác định một cách tùy chỉnh để so sánh hai mục, đó là tất cả những gì bạn cần. Điều đó hoạt động với tất cả các loại giá trị
Nhân tiện, điều này hoạt động trên bất kỳ giá trị nào, các giá trị không nhất thiết phải là các mảng phức tạp. Nếu bạn muốn thực hiện phép so sánh tùy chỉnh, bạn cũng có thể thực hiện trên một dãy số đơn giản
$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
9 sắp xếp theo tham chiếu và không trả lại bất kỳ thứ gì hữu ích
$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
Lưu ý là mảng sắp xếp tại chỗ, bạn không cần gán giá trị trả về cho bất cứ thứ gì.
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
43 sẽ thay thế mảng bằng
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
44, không phải bằng mảng đã sắp xếp. Chỉ cần
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
45 hoạt độngSo sánh số tùy chỉnh
Nếu bạn muốn sắp xếp theo khóa
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
46, là khóa số, tất cả những gì bạn cần làm là
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
4Nhờ The PoWEr of MATH, giá trị này trả về một giá trị < 0, 0 hoặc > 0 tùy thuộc vào việc
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
00 có thấp hơn, bằng hoặc lớn hơn
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
02 hay khôngLưu ý rằng điều này sẽ không hoạt động tốt đối với các giá trị
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
49, vì chúng sẽ bị giảm xuống thành function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
20 và mất độ chính xác. Thay vào đó, hãy sử dụng các giá trị trả về rõ ràng như function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
21, usort[$array, 'cmp'];
4 và function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
23Các đối tượng
Nếu bạn có một mảng đối tượng, nó cũng hoạt động theo cách tương tự
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
2Chức năng
Bạn có thể làm bất cứ điều gì bạn cần bên trong hàm so sánh, bao gồm cả hàm gọi
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
7Dây
Một phím tắt cho phiên bản so sánh chuỗi đầu tiên
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
8function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
24 thực hiện chính xác những gì được mong đợi của usort[$array, 'cmp'];
8 tại đây, nó trả về function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
21, usort[$array, 'cmp'];
4 hoặc function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
23nhà điều hành tàu vũ trụ
PHP 7 đã giới thiệu toán tử tàu vũ trụ, thống nhất và đơn giản hóa bằng/nhỏ hơn/lớn hơn so với so sánh giữa các loại
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
4Sắp xếp theo nhiều trường
Nếu bạn muốn sắp xếp chủ yếu theo
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
29, nhưng nếu function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
29 bằng nhau cho hai phần tử thì sắp xếp theo
#output: Array
[
[Leo] => 15
[Jack] => 27
[Alice] => 39
]
46$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
0Đối với những người đã quen thuộc, điều này tương đương với một truy vấn SQL với
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
72. Ngoài ra, hãy xem phiên bản tốc ký rất gọn gàng này và cách tạo một hàm so sánh như vậy một cách linh hoạt cho số lượng khóa tùy ý.
Sắp xếp theo thứ tự tĩnh, thủ công
Nếu bạn muốn sắp xếp các phần tử theo "thứ tự thủ công" như "foo", "bar", "baz"
$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
1Đối với tất cả những điều trên, nếu bạn đang sử dụng PHP 5. 3 trở lên [và bạn thực sự nên làm như vậy], hãy sử dụng các hàm ẩn danh cho mã ngắn hơn và để tránh có một hàm toàn cầu khác trôi nổi xung quanh
$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
2Đó là cách đơn giản để sắp xếp một mảng đa chiều phức tạp. Một lần nữa, chỉ cần nghĩ về việc dạy PHP làm thế nào để biết mục nào trong hai mục là "lớn hơn";
Ngoài ra, đối với tất cả những điều trên, để chuyển đổi giữa thứ tự tăng dần và giảm dần, chỉ cần hoán đổi các đối số
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
00 và
#output: Array
[
[Alice] => 39
[Jack] => 27
[Leo] => 15
]
02 xung quanh. e. g$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
3Và sau đó là
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
75 đặc biệt, cho phép bạn sắp xếp một mảng dựa trên một mảng khác$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
4Kết quả mong đợi ở đây sẽ là
$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
5Sử dụng
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
75 để đến đó$array = array[
array['foo' => 'bar', 'baz' => 42],
array['foo' => ..., 'baz' => ...],
...
];
6Kể từ PHP 5. 5. 0, bạn có thể sử dụng
function cmp[array $a, array $b] {
if [$a['foo'] < $b['foo']] {
return -1;
} else if [$a['foo'] > $b['foo']] {
return 1;
} else {
return 0;
}
}
77 để trích xuất một cột từ mảng nhiều chiều và sắp xếp mảng trên cột đó