2013-03-21 125 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