Hướng dẫn is php usort stable? - php usort có ổn định không?

(Php 4, Php 5, Php 7, Php 8)

usort-Sắp xếp một mảng theo các giá trị bằng hàm so sánh do người dùng xác địnhSort an array by values using a user-defined comparison function

Sự mô tả

usort (mảng &$array, có thể gọi $callback): bool(array &$array, callable $callback): bool

Ghi chú::

Nếu hai thành viên so sánh bằng nhau, họ giữ lại thứ tự ban đầu của họ. Trước PHP 8.0.0, thứ tự tương đối của chúng trong mảng được sắp xếp không được xác định.

Lưu ý: Hàm này gán các khóa mới cho các phần tử trong array. Nó sẽ loại bỏ bất kỳ khóa hiện có nào có thể đã được chỉ định, thay vì chỉ sắp xếp lại các khóa.: This function assigns new keys to the elements in array. It will remove any existing keys that may have been assigned, rather than just reordering the keys.

Thông số

array

Mảng đầu vào.

callback

Hàm so sánh phải trả về một số nguyên nhỏ hơn, bằng hoặc lớn hơn 0 nếu đối số đầu tiên được coi là nhỏ hơn, bằng hoặc lớn hơn thứ hai.

Trả về giá trị

Luôn trả về true.true.

Thay đổi

Phiên bảnSự mô tả
8.0.0 usort (mảng &$array, có thể gọi $callback): boolE_WARNING.

Ghi chú:

Nếu hai thành viên so sánh bằng nhau, họ giữ lại thứ tự ban đầu của họ. Trước PHP 8.0.0, thứ tự tương đối của chúng trong mảng được sắp xếp không được xác định.usort() example

Baldwin, Adam
Baldwin, Alec
West, Adam
0

Baldwin, Adam
Baldwin, Alec
West, Adam
1

Baldwin, Adam
Baldwin, Alec
West, Adam
2

Lưu ý: Hàm này gán các khóa mới cho các phần tử trong array. Nó sẽ loại bỏ bất kỳ khóa hiện có nào có thể đã được chỉ định, thay vì chỉ sắp xếp lại các khóa.

Thông số

Baldwin, Adam
Baldwin, Alec
West, Adam
3

Baldwin, Adam
Baldwin, Alec
West, Adam
1

Baldwin, Adam
Baldwin, Alec
West, Adam
2

Ghi chú::

Nếu hai thành viên so sánh bằng nhau, họ giữ lại thứ tự ban đầu của họ. Trước PHP 8.0.0, thứ tự tương đối của chúng trong mảng được sắp xếp không được xác định.sort() function would be more appropriate.

Lưu ý: Hàm này gán các khóa mới cho các phần tử trong array. Nó sẽ loại bỏ bất kỳ khóa hiện có nào có thể đã được chỉ định, thay vì chỉ sắp xếp lại các khóa.usort() example using multi-dimensional array

Baldwin, Adam
Baldwin, Alec
West, Adam
6

Baldwin, Adam
Baldwin, Alec
West, Adam
1

Baldwin, Adam
Baldwin, Alec
West, Adam
8

Thông số

Lưu ý: Hàm này gán các khóa mới cho các phần tử trong array. Nó sẽ loại bỏ bất kỳ khóa hiện có nào có thể đã được chỉ định, thay vì chỉ sắp xếp lại các khóa.

$fruits[0]: apples
$fruits[1]: grapes
$fruits[2]: lemons

Thông sốusort() example using a member function of an object

Baldwin, Adam
Baldwin, Alec
West, Adam
9

&$array0

&$array1

Lưu ý: Hàm này gán các khóa mới cho các phần tử trong array. Nó sẽ loại bỏ bất kỳ khóa hiện có nào có thể đã được chỉ định, thay vì chỉ sắp xếp lại các khóa.

Thông sốusort() example using a closure to sort a multi-dimensional array

&$array2

&$array3

&$array4

Lưu ý: Hàm này gán các khóa mới cho các phần tử trong array. Nó sẽ loại bỏ bất kỳ khóa hiện có nào có thể đã được chỉ định, thay vì chỉ sắp xếp lại các khóa.

Thông sốusort() example using the spaceship operator

array

&$array6

&$array3

&$array8

Lưu ý: Hàm này gán các khóa mới cho các phần tử trong array. Nó sẽ loại bỏ bất kỳ khóa hiện có nào có thể đã được chỉ định, thay vì chỉ sắp xếp lại các khóa.

Baldwin, Adam
Baldwin, Alec
West, Adam

Thông số

  • array
  • Mảng đầu vào.
  • callback

Hàm so sánh phải trả về một số nguyên nhỏ hơn, bằng hoặc lớn hơn 0 nếu đối số đầu tiên được coi là nhỏ hơn, bằng hoặc lớn hơn thứ hai.

Trả về giá trị

&$array9

$callback0

$callback1

$callback2

Luôn trả về true.

Thay đổi

$callback3

$callback4

$callback5

Phiên bản

Nếu callback mong đợi một tham số được truyền qua tham chiếu, chức năng này bây giờ sẽ phát ra một E_WARNING.

$callback6

$callback7

$callback8

$callback9

Ví dụ

Ví dụ #1 usort () ví dụ

array0

array1

Ví dụ trên sẽ xuất ra:

Toán tử tàu vũ trụ có thể được sử dụng để đơn giản hóa so sánh nội bộ hơn nữa.

Rõ ràng trong trường hợp tầm thường này, hàm sort () sẽ phù hợp hơn.

array3

array4

array5

$callback2

Ví dụ #2 usort () Ví dụ sử dụng mảng đa chiều

Khi sắp xếp một mảng đa chiều, $ a và $ b chứa các tham chiếu đến chỉ mục đầu tiên của mảng.

array7

array8

$callback2

Ví dụ #3 usort () Ví dụ sử dụng hàm thành viên của một đối tượng

Ví dụ #4 usort () Ví dụ sử dụng đóng cửa để sắp xếp một mảng đa chiều

array0

Ví dụ #5 usort () Ví dụ sử dụng toán tử tàu vũ trụ

Toán tử tàu vũ trụ cho phép so sánh đơn giản các giá trị hợp chất trên nhiều trục. Ví dụ sau đây sẽ sắp xếp &$array5 theo họ, sau đó bằng tên đầu tiên nếu tên cuối cùng khớp.

array1

array2

array3

array4

$callback2

Xem thêm

Uasort () - Sắp xếp một mảng có chức năng so sánh do người dùng xác định và duy trì liên kết chỉ mục

array6

array7

array8

array9

uksort () - Sắp xếp một mảng theo các phím bằng hàm so sánh do người dùng xác định

Uasort () - Sắp xếp một mảng có chức năng so sánh do người dùng xác định và duy trì liên kết chỉ mục

callback0

callback1

callback2

callback3

$callback2