2013-03-21 12 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'); 

Edit: Значения даты в формате: YYYY-MM-DD

На самом деле, когда я сделать print_r, я получаю

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

пожалуйста, не используйте 'Foo: .. endfoo;' синтаксис в файлах contactual кода. этот синтаксис всегда был предназначен для шаблонов, и большинство разработчиков не ожидали или не оценили его использование где-либо еще – ThiefMaster

+1

вы уверены, что с самого начала было что-то в массиве? сделайте print_r() ПЕРЕД вызовом usort. –

+0

does events_array имеют значения перед сортировкой? – Lighthart

ответ

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-мерной размерности, неверно ... – ITroubs

+0

ITroubs прав, вот как это сделать с помощью usort: http://stackoverflow.com/questions/2910611/PHP-род-а-многомерный-массив по-содержащего элемент-дата –

Смежные вопросы