2012-04-03 44 views
22

thể trùng lặp:
how to sort a multidemensional array by an inner key
How to sort an array of arrays in php?PHP Sắp xếp mảng theo trường?

Làm thế nào tôi có thể sắp xếp một mảng như: $array[$i]['title'];

cấu trúc mảng có thể như:

array[0](
'id' => 321, 
'title' => 'Some Title', 
'slug' => 'some-title', 
'author' => 'Some Author', 
'author_slug' => 'some-author'); 

array[1](
'id' => 123, 
'title' => 'Another Title', 
'slug' => 'another-title', 
'author' => 'Another Author', 
'author_slug' => 'another-author'); 

Vì vậy, dữ liệu được hiển thị trong Thứ tự ASC dựa trên trường tiêu đề trong mảng?

+0

Michael: Tim chỉ hữu ích. Tìm kiếm đầu tiên là một chút điều kiện tiên quyết ở đây và chúng tôi nhận được một _lot_ những người đặt câu hỏi dường như không tìm kiếm/thử nghiệm trước tiên. – halfer

Trả lời

68

Sử dụng usort được xây dựng một cách rõ ràng cho mục đích này.

function cmp($a, $b) 
{ 
    return strcmp($a["title"], $b["title"]); 
} 

usort($array, "cmp"); 
+11

Bạn có thể nhân với -1 để đảo ngược sắp xếp, chỉ là một FYI cho bất kỳ ai có thể cần phải làm như vậy. –

+14

Bắt đầu từ PHP 5.3, bạn có thể sử dụng các hàm ẩn danh, đặc biệt hữu ích nếu bạn đang ở trong một lớp trong không gian tên: 'usort ($ domain_array, function ($ a, $ b) { return strcmp ($ a [" tên "], $ b [" tên "]); }); ' –

+1

Chỉ cần thêm một chút vào @GabiLee, nếu bạn muốn trường tìm kiếm động dựa trên một số biến bạn đã đặt, hãy thử: usort ($ domain_array, hàm ($ a, $ b) use ($ searchField) {return strcmp ($ a [$ searchField], $ b [$ searchField]);}); Điều này có thể hữu ích ví dụ trên một trang web nơi người dùng có thể chọn một trường để sắp xếp theo. – stealthysnacks

Các vấn đề liên quan