2013-03-21 22 views
7

Ben PHP kodları aşağıdaki dizi formatı:PHP sırala Dizisi

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'); 

Düzenleme: tarih değerlerini biçimdedir: YYYY-AA-GG

Aslında ben print_r yap, ben olsun

Sen (dizi 2 boyutlu olduğu için) kendi çoklu sütun sıralama işlevi oluşturmak zorunda
[title] => SimpleXMLElement Object () [date] => SimpleXMLElement Object () 
+0

' foo kullanmayın lütfen:

Bu konuya bir göz ver. Bu sözdizimi her zaman şablonlama amaçlıydı ve çoğu geliştirici, başka bir yerde kullanılmasını beklemiyor veya takdir etmiyor – ThiefMaster

+1

Dizideki herhangi bir şey olduğundan emin misiniz? usort dediğinizden önce print_r() yapın. –

+0

, events_array'ın sıralamadan önce değerleri var mı? – Lighthart

cevap

12

:

array_sort_by_column($events_array, 'date'); 

var_dump($events_array); 

sıralama işlevi:

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 <- örnek # 2 2 boyutlu bir dizi kullanır bu yüzden bizim 2 boyutlu farklı bevause yapmak zorunda olduğumuzu ifade yanlış ... – ITroubs

+0

ITroubs haklıdır, işte nasıl kullanılır: http://stackoverflow.com/questions/2910611/php-sort-a-boyutlu dizi-eleman içeren tarih –