2013-03-21 176 views
7

我在我的PHP代碼以下陣列格式:PHP排序數組

foreach ($events as $info) { 
    $events_array[] = array(
     'title' => $info->Name, 
     'date' => $info->Date 
    ); 
} 
function cb($a, $b) { 
    return strtotime($a['date']) - strtotime($b['date']); 
} 
usort($events_array, 'cb'); 

編輯:日期值的格式爲:YYYY-MM-DD

其實,當我這樣做的print_r,我得到

[title] => SimpleXMLElement Object () [date] => SimpleXMLElement Object () 
+0

請不要使用'富:.. endfoo;'語法文件contactual代碼。該語法總是用於模板化,大多數開發人員不會期望或感謝它在其他地方使用 – ThiefMaster 2013-03-21 20:27:15

+1

您確定陣列中有任何內容開始?在您調用usort之前執行print_r()。 – 2013-03-21 20:28:04

+0

events_array在排序之前是否有值? – Lighthart 2013-03-21 20:28:59

回答

12

你必須創建自己的多列排序功能(因爲你的陣列是2維):

array_sort_by_column($events_array, 'date'); 

var_dump($events_array); 

排序功能:

function array_sort_by_column(&$array, $column, $direction = SORT_ASC) { 
    $reference_array = array(); 

    foreach($array as $key => $row) { 
     $reference_array[$key] = $row[$column]; 
    } 

    array_multisort($reference_array, $direction, $array); 
} 
+2

http://www.php.net/manual/en/function.usort.php < - example#2使用2維數組,所以我們的聲明,他必須做它不同的2維度bevause是錯誤的... – ITroubs 2013-03-21 20:34:27

+0

ITroubs是正確的,這裏是如何使用usort:http://stackoverflow.com/questions/2910611/PHP的排序-A-多維陣列逐含元素最新 – 2014-10-14 13:52:06