Làm thế nào để bạn sắp xếp một mảng trong php tăng dần?

Để 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ố 8

Nế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ế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;
    }
}

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
]
0

Tấ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

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 động

So 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
]
4

Nhờ 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ông

Lư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;
    }
}
23

Cá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;
    }
}
2

Chứ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;
    }
}
7

Dâ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;
    }
}
8

function 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;
    }
}
23

nhà đ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;
    }
}
4

Sắ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' => ...],
    ...
];
3

Và 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' => ...],
    ...
];
4

Kết quả mong đợi ở đây sẽ là

$array = array[
    array['foo' => 'bar', 'baz' => 42],
    array['foo' => ...,   'baz' => ...],
    ...
];
5

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;
    }
}
75 để đến đó

$array = array[
    array['foo' => 'bar', 'baz' => 42],
    array['foo' => ...,   'baz' => ...],
    ...
];
6

Kể 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 đó

Làm cách nào để sắp xếp mảng trong php mà không cần sử dụng chức năng?

Công dụng của hàm sort[] trong php là gì?

Định nghĩa và cách sử dụng . Mẹo. Sử dụng hàm rsort[] để sắp xếp một mảng được lập chỉ mục theo thứ tự giảm dần. sorts an indexed array in ascending order. Tip: Use the rsort[] function to sort an indexed array in descending order.

Làm cách nào để sử dụng Asort trong php?

Hàm asort[] sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo giá trị . Mẹo. Sử dụng hàm arsort[] để sắp xếp một mảng kết hợp theo thứ tự giảm dần, theo giá trị. Mẹo. Sử dụng hàm ksort[] để sắp xếp một mảng kết hợp theo thứ tự tăng dần, theo khóa.

Chủ Đề