2010-09-27 24 views
7
Array 
(
[1] => Array 
    (
     [id] => 1 
     [sort] => 1 
    ) 

[3] => Array 
    (
     [id] => 3 
     [sort] => 3 
    ) 

[2] => Array 
    (
     [id] => 2 
     [sort] => 2 
    ) 

)PHP mảng loại sử dụng val nội

Làm thế nào để tôi sắp xếp nó để tái ra lệnh bằng cách sử dụng 'sắp xếp' bên trong chính mình? tức là ở trên sẽ giống như thế này:

Array 
(
[1] => Array 
    (
     [id] => 1 
     [sort] => 1 
    ) 

[2] => Array 
    (
     [id] => 2 
     [sort] => 2 
    ) 

[3] => Array 
    (
     [id] => 3 
     [sort] => 3 
    ) 

)

+0

một lượng lớn các bản sao: http://stackoverflow.com/search?q=php+sort (Chết tiệt, tại sao là một chủ đề nóng như thế này gần đây?) –

+0

chung PHP .net có rất nhiều ghi chú thực sự hữu ích từ người dùng, bạn có xem qua trang sắp xếp hay không và nếu có thì mọi thứ sẽ xảy ra ở đâu? Tốt nhất là chúng tôi có thể giúp bạn nếu chúng tôi biết những gì bạn đã thử và những gì bạn đã có. http://php.net/manual/en/function.sort.php – Incognito

+0

@dennis Đó là ngày 27 tháng 9, tôi nghĩ rằng vòng đầu tiên của các dự án trường học là do. – Incognito

Trả lời

0

Something như thế này:

uasort($array, 'compfunc'); 

function compfunc($a, $b) 
{ 
    return $a['sort'] - $b['sort']; 
} 
16

Bạn có thể sử dụng usort với chức năng so sánh này:

function cmpBySort($a, $b) { 
    return $a['sort'] - $b['sort']; 
} 
usort($arr, 'cmpBySort'); 

Hoặc bạn sử dụng array_multisort với một mảng giá trị khóa bổ sung cho thứ tự sắp xếp:

$keys = array_map(function($val) { return $val['sort']; }, $arr); 
array_multisort($keys, $arr); 

Đây array_map với anonymous function được sử dụng để xây dựng một mảng của loại giá trị được sử dụng để sắp xếp các giá trị mảng chính nó. Ưu điểm của việc này là có hàm so sánh np cần được gọi cho mỗi cặp giá trị.

+0

Điều này làm việc cho tôi. Cảm ơn. – rottenoats

3

Something như thế này:

usort($array, function (array $a, array $b) { return $a["sort"] - $b["sort"]; }); 
+0

Chết tiệt, bị đánh đập đến một dặm ... –

+0

Vui lòng xóa câu trả lời trùng lặp (và chỉ mã) này. Tôi sẽ không phục vụ để mang lại lợi ích cho độc giả SO. – mickmackusa

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