2010-08-29 4 views
5

tôi có một mảng như thế này:sắp xếp một căn cứ mảng trên chìa khóa

Array 
(
    [0] => Array 
     (
      [title] => some title 
      [time] => 1279231500 
     ) 

    [1] => Array 
     (
      [title] => some title 2 
      [time] => 1279231440 
     ) 

    [2] => Array 
     (
      [title] => some title 3 
      [time] => 1279229880 
     ) 
) 

làm thế nào tôi có thể sắp xếp nó theo thời gian?

Trả lời

4

Bạn có thể sắp xếp nó theo cách này (vì nó là một mảng kết hợp):

function cmp($a, $b) 
{ 
    return strcmp($a['time'], $b['time']); 
} 

usort($your_array, "cmp"); 
print_r($your_array); 
+0

bất kỳ ý tưởng làm thế nào để đảo ngược thứ tự? – greenbandit

+0

@greenbandit - Thay đổi hàm so sánh thành 'return strcmp ($ b ['time'], $ a ['time']);' - usort() đang sắp xếp dựa trên 'cmp()'. –

+0

@reverse: Hoặc trả về '-1 * strcmp (...);' hoặc áp dụng 'array_reverse' sau khi sắp xếp. – NikiC

1

Như Gumbo đề cập, bạn không nên sử dụng strcmp cho các giá trị số nguyên.

Sử dụng chức năng này

function cmp($a, $b) { 
    if ($a['time'] == $b['time']) 
     return 0; 
    return ($a['time'] < $b['time']) ? -1 : 1; 
} 
+0

Đối với các giá trị số nguyên, 'return $ a ['time'] - $ b ['time'];' sẽ đủ. – salathe